/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.cip.esymons.eventos.beans;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import org.cip.esymons.eventos.adapaters.DisponibilidadAmbientesSemanal;
import org.cip.esymons.eventos.adapaters.ExportarExcel;
import org.cip.esymons.eventos.adapaters.RutaCarpetaReporte;
import org.cip.esymons.eventos.bc.ContratoDelegate;
import org.cip.esymons.eventos.bc.EventoDelegate;
import org.cip.esymons.eventos.bc.PreEventoDelegate;
import org.cip.esymons.eventos.bc.ReservaAmbienteDelegate;
import org.cip.esymons.eventos.be.Ambiente;
//import org.cip.esymons.eventos.be.EgresosAdapter;
import org.cip.esymons.eventos.be.Contrato;
import org.cip.esymons.eventos.be.Preevento;
import org.cip.esymons.eventos.be.ReservaAmbiente;
import org.cip.esymons.eventos.be.ServicioEquipo;
import org.cip.esymons.general.bc.SolicitanteDelegate;
import org.cip.esymons.general.be.Departamento;
import org.cip.esymons.general.be.DireccionPersona;
import org.cip.esymons.general.be.Distrito;
import org.cip.esymons.general.be.PersonaJuridica;
import org.cip.esymons.general.be.PersonaNatural;
import org.cip.esymons.general.be.Provincia;
import org.cip.esymons.general.be.Solicitante;
import org.cip.esymons.general.be.TelefonoSolicitante;
import org.cip.esymons.general.be.TipoZona;
import org.cip.esymons.general.be.Via;
import org.cip.esymons.general.util.Utiles;

/**
 *
 * @author oscar
 */
public class ReservaController {

    ReservaAmbienteDelegate delegate;
    ReservaAmbiente reserva;
    List<ReservaAmbiente> listaReservas;
    List<DisponibilidadAmbientesSemanal> listaAmbientesDisponibles;
    List<DisponibilidadAmbientesSemanal> listaAmbientesDisponibles1;
    List<DisponibilidadAmbientesSemanal> listaAmbientesReservados;
    RutaCarpetaReporte ruta;
    Ambiente ambienteSeleccionado;
    ServicioEquipo servicioSeleccionado;
    Date fechaAmbiente = new Date();
    String tipoAmbiente = "1";
    String nombreEvento;
    DisponibilidadAmbientesSemanal disponibilidad;
    String tipoReserva = "true";
    //lizardo estuvo aqui
    Boolean mostrarBotonReservar;
    Integer tipoReservacion = 0;
    String dni = "";
    String ruc = "";
    String paterno = "";
    String materno = "";
    String nombres = "";
    String nombrePersona = "";
    String nombreEmpresa = "";
    String razonSocial = "";
    String tabber = "busquedas";
    Integer banTipo = 0;
    Boolean contratanteSeleccionado = false;
    PersonaNatural persona;
    PersonaNatural personaSeleccionada;
    PersonaNatural personaNatural;
    PersonaJuridica empresa;
    PersonaJuridica empresaSeleccionada;
    PersonaJuridica personaJuridica;
    List<PersonaJuridica> listaEmpresa;
    List<PersonaNatural> listaPersonas;
    Boolean contratanteRegistrado;
    Integer tipoPersona;
    Integer codDistrito;
    Integer codProvincia;
    Integer codDepartamento;
    Integer codVia;
    Integer codZona;
    Departamento departamento;
    Provincia provincia;
    Distrito distrito;
    Via via;
    TipoZona zona;
    DireccionPersona direccion;
    DireccionPersona direccionSeleccionada;
    TelefonoSolicitante telefono;
    TelefonoSolicitante telefonoSeleccionada;
    List<DireccionPersona> listaDireccion;
    List<TelefonoSolicitante> listaTelefono;
    String consideraciones = "";
    Integer codEvento = 0;
    Boolean ocultarEvento = false;
    String nombreReserva;
    Integer tipoModalidad;
    Long codigoSolicitante;
    Boolean tipoContrato;
    String lugarReunion;

    public ReservaController() {
        inicializar();
    }

    public String inicializar() {
        lugarReunion = null;
        nombreReserva = null;
        ruta = new RutaCarpetaReporte();
        delegate = new ReservaAmbienteDelegate();
        reserva = new ReservaAmbiente();
        listaReservas = new ArrayList<ReservaAmbiente>();
        ambienteSeleccionado = new Ambiente();
        servicioSeleccionado = new ServicioEquipo();
        listaAmbientesDisponibles = new ArrayList<DisponibilidadAmbientesSemanal>();
        listaAmbientesDisponibles1 = new ArrayList<DisponibilidadAmbientesSemanal>();
        disponibilidad = new DisponibilidadAmbientesSemanal();
        //lizardo estuvo aqui
        mostrarBotonReservar = false;
        tipoPersona = 0;    //empresa
        persona = new PersonaNatural();
        personaSeleccionada = new PersonaNatural();
        personaNatural = new PersonaNatural();
        empresa = new PersonaJuridica();
        empresaSeleccionada = new PersonaJuridica();
        personaJuridica = new PersonaJuridica();
        listaEmpresa = new ArrayList<PersonaJuridica>();
        listaPersonas = new ArrayList<PersonaNatural>();
        departamento = new Departamento();
        provincia = new Provincia();
        distrito = new Distrito();
        via = new Via();
        zona = new TipoZona();
        direccion = new DireccionPersona();
        telefono = new TelefonoSolicitante();
        listaDireccion = new ArrayList<DireccionPersona>();
        listaTelefono = new ArrayList<TelefonoSolicitante>();
        tipoReserva = "false";
        fechaAmbiente = new Date();
        return "";
    }

    public void establecerConsideraciones() {
        consideraciones =  "1. Seleccione un tipo de reserva\n";
        consideraciones += "2. Seleccione ambiente o equipo\n";
        consideraciones += "3. Seleccione una fecha del calendario\n";
        consideraciones += "4. Debe dar clic en la imagen para buscar las reservas\n";
        consideraciones += "5. Solo se puede reservar ambientes de la fecha actual hacia adelante";
    }

    public String verificarEventoSeleccionado() {
        System.out.println("inicio = codigo evento: " + codEvento);
        codEvento = (codEvento != null) ? codEvento : 0;
        System.out.println("fin    = codigo evento: " + codEvento);
        return null;
    }

    //<editor-fold defaultstate="collapsed" desc="Gets y Sets">
    public ReservaAmbienteDelegate getDelegate() {
        return delegate;
    }

    public List<DisponibilidadAmbientesSemanal> getListaAmbientesReservados() {
        return listaAmbientesReservados;
    }

    public void setListaAmbientesReservados(List<DisponibilidadAmbientesSemanal> listaAmbientesReservados) {
        this.listaAmbientesReservados = listaAmbientesReservados;
    }

    public String getDni() {
        return dni;
    }

    public void setDni(String dni) {
        this.dni = dni;
    }

    public Boolean getMostrarBotonReservar() {
        if (listaAmbientesDisponibles1 != null) {
            mostrarBotonReservar = (listaAmbientesDisponibles1.size() > 0) ? true : false;
        }
        mostrarBotonReservar = (mostrarBotonReservar != null) ? mostrarBotonReservar : false;
        return mostrarBotonReservar;
    }

    public void setMostrarBotonReservar(Boolean mostrarBotonReservar) {
        this.mostrarBotonReservar = mostrarBotonReservar;
    }


    
    public List<PersonaJuridica> getListaEmpresa() {
        return listaEmpresa;
    }

    public void setListaEmpresa(List<PersonaJuridica> listaEmpresa) {
        this.listaEmpresa = listaEmpresa;
    }

    public String getMaterno() {
        return materno;
    }

    public void setMaterno(String materno) {
        this.materno = materno;
    }

    public String getPaterno() {
        return paterno;
    }

    public void setPaterno(String paterno) {
        this.paterno = paterno;
    }

    public PersonaNatural getPersona() {
        return persona;
    }

    public void setPersona(PersonaNatural persona) {
        this.persona = persona;
    }

    public PersonaJuridica getEmpresa() {
        return empresa;
    }

    public void setEmpresa(PersonaJuridica empresa) {
        this.empresa = empresa;
    }

    public Integer getTipoPersona() {
        return tipoPersona;
    }

    public void setTipoPersona(Integer tipoPersona) {
        this.tipoPersona = tipoPersona;
    }

    public Integer getCodDistrito() {
        return codDistrito;
    }

    public void setCodDistrito(Integer codDistrito) {
        this.codDistrito = codDistrito;
    }

    public Integer getCodVia() {
        return codVia;
    }

    public void setCodVia(Integer codVia) {
        this.codVia = codVia;
    }

    public Integer getCodZona() {
        return codZona;
    }

    public void setCodZona(Integer codZona) {
        this.codZona = codZona;
    }

    public List<DireccionPersona> getListaDireccion() {
        return listaDireccion;
    }

    public void setListaDireccion(List<DireccionPersona> listaDireccion) {
        this.listaDireccion = listaDireccion;
    }

    public List<TelefonoSolicitante> getListaTelefono() {
        return listaTelefono;
    }

    public void setListaTelefono(List<TelefonoSolicitante> listaTelefono) {
        this.listaTelefono = listaTelefono;
    }

    public TelefonoSolicitante getTelefono() {
        return telefono;
    }

    public void setTelefono(TelefonoSolicitante telefono) {
        this.telefono = telefono;
    }

    public DireccionPersona getDireccionSeleccionada() {
        return direccionSeleccionada;
    }

    public void setDireccionSeleccionada(DireccionPersona direccionSeleccionada) {
        this.direccionSeleccionada = direccionSeleccionada;
    }

    public TelefonoSolicitante getTelefonoSeleccionada() {
        return telefonoSeleccionada;
    }

    public void setTelefonoSeleccionada(TelefonoSolicitante telefonoSeleccionada) {
        this.telefonoSeleccionada = telefonoSeleccionada;
    }

    public Integer getTipoReservacion() {
        verificarTipoReservacion();
        return tipoReservacion;
    }

    public void setTipoReservacion(Integer tipoReservacion) {
        this.tipoReservacion = tipoReservacion;
    }

    public String getLugarReunion() {
        return lugarReunion;
    }

    public void setLugarReunion(String lugarReunion) {
        this.lugarReunion = lugarReunion;
    }



    public String getConsideraciones() {
        establecerConsideraciones();
        return consideraciones;
    }

    public void setConsideraciones(String consideraciones) {
        this.consideraciones = consideraciones;
    }

    public Integer getCodEvento() {
        return codEvento;
    }

    public void setCodEvento(Integer codEvento) {
        this.codEvento = codEvento;
    }

    public Boolean getOcultarEvento() {
        return ocultarEvento;
    }

    public void setOcultarEvento(Boolean ocultarEvento) {
        this.ocultarEvento = ocultarEvento;
    }

    public String getNombreReserva() {
        nombreEvento = nombreReserva;
        return nombreReserva;
    }

    public void setNombreReserva(String nombreReserva) {
        this.nombreReserva = nombreReserva;
    }

    public PersonaJuridica getEmpresaSeleccionada() {
        return empresaSeleccionada;
    }

    public void setEmpresaSeleccionada(PersonaJuridica empresaSeleccionada) {
        this.empresaSeleccionada = empresaSeleccionada;
    }

    public String getNombrePersona() {
        switch (banTipo) {
            case 1: mostrarPersona();   break;
            case 2: mostrarPersonaV2(); break;
        }
        return nombrePersona;
    }

    public void setNombrePersona(String nombrePersona) {
        this.nombrePersona = nombrePersona;
    }

    public String getNombreEmpresa() {
        switch (banTipo) {
            case 3: mostrarEmpresa();   break;
            case 4: mostrarEmpresaV2(); break;
        }
        return nombreEmpresa;
    }

    public void setNombreEmpresa(String nombreEmpresa) {
        this.nombreEmpresa = nombreEmpresa;
    }

    public PersonaJuridica getPersonaJuridica() {
        return personaJuridica;
    }

    public void setPersonaJuridica(PersonaJuridica personaJuridica) {
        this.personaJuridica = personaJuridica;
    }

    public PersonaNatural getPersonaNatural() {
        return personaNatural;
    }

    public void setPersonaNatural(PersonaNatural personaNatural) {
        this.personaNatural = personaNatural;
    }

    public String getRazonSocial() {
        mostrarEmpresa();
        return razonSocial;
    }

    public void setRazonSocial(String razonSocial) {
        this.razonSocial = razonSocial;
    }

    public String getRuc() {
        return ruc;
    }

    public void setRuc(String ruc) {
        this.ruc = ruc;
    }

    public String getNombres() {
        return nombres;
    }

    public void setNombres(String nombres) {
        this.nombres = nombres;
    }

    public List<PersonaNatural> getListaPersonas() {
        return listaPersonas;
    }

    public void setListaPersonas(List<PersonaNatural> listaPersonas) {
        this.listaPersonas = listaPersonas;
    }

    public Integer getBanTipo() {
        return banTipo;
    }

    public void setBanTipo(Integer banTipo) {
        this.banTipo = banTipo;
    }

    public Boolean getContratanteSeleccionado() {
        return contratanteSeleccionado;
    }

    public void setContratanteSeleccionado(Boolean contatanteSeleccionado) {
        this.contratanteSeleccionado = contatanteSeleccionado;
    }

    public PersonaNatural getPersonaSeleccionada() {
        return personaSeleccionada;
    }

    public void setPersonaSeleccionada(PersonaNatural personaSeleccionada) {
        this.personaSeleccionada = personaSeleccionada;
    }

    public String getTabber() {
        return tabber;
    }

    public void setTabber(String tabber) {
        this.tabber = tabber;
    }

    public Integer getCodDepartamento() {
        try {
            codDepartamento = (codDepartamento != null) ? codDepartamento : 0;
            departamento = delegate.buscarDepartamento(codDepartamento);
        } catch (Exception ex) {
            System.out.println("FATAL: " + ex.getMessage());
        }
        return codDepartamento;
    }

    public void setCodDepartamento(Integer codDepartamento) {
        this.codDepartamento = codDepartamento;
    }

    public Integer getCodProvincia() {
        return codProvincia;
    }

    public void setCodProvincia(Integer codProvincia) {
        this.codProvincia = codProvincia;
    }

    public Departamento getDepartamento() {
        return departamento;
    }

    public void setDepartamento(Departamento departamento) {
        this.departamento = departamento;
    }

    public Distrito getDistrito() {
        return distrito;
    }

    public void setDistrito(Distrito distrito) {
        this.distrito = distrito;
    }

    public Provincia getProvincia() {
        return provincia;
    }

    public void setProvincia(Provincia provincia) {
        this.provincia = provincia;
    }

    public Via getVia() {
        return via;
    }

    public void setVia(Via via) {
        this.via = via;
    }

    public TipoZona getZona() {
        return zona;
    }

    public void setZona(TipoZona zona) {
        this.zona = zona;
    }

    public DireccionPersona getDireccion() {
        return direccion;
    }

    public void setDireccion(DireccionPersona direccion) {
        this.direccion = direccion;
    }

    

    public List<ReservaAmbiente> getListaReservas() {
        return listaReservas;
    }

    public void setListaReservas(List<ReservaAmbiente> listaReservas) {
        this.listaReservas = listaReservas;
    }

    public ReservaAmbiente getReserva() {
        return reserva;
    }

    public void setReserva(ReservaAmbiente reserva) {
        this.reserva = reserva;
    }

    public String getTipoReserva() {
        return tipoReserva;
    }

    public void setTipoReserva(String tipoReserva) {
        this.tipoReserva = tipoReserva;
    }

    public List<DisponibilidadAmbientesSemanal> getListaAmbientesDisponibles1() {
        return listaAmbientesDisponibles1;
    }

    public void setListaAmbientesDisponibles1(List<DisponibilidadAmbientesSemanal> listaAmbientesDisponibles1) {
        this.listaAmbientesDisponibles1 = listaAmbientesDisponibles1;
    }

    public DisponibilidadAmbientesSemanal getDisponibilidad() {
        return disponibilidad;
    }

    public void setDisponibilidad(DisponibilidadAmbientesSemanal disponibilidad) {
        this.disponibilidad = disponibilidad;
    }

    public String getNombreEvento() {
        return nombreEvento;
    }

    public void setNombreEvento(String nombreEvento) {
        this.nombreEvento = nombreEvento;
    }

    public String getTipoAmbiente() {
        return tipoAmbiente;
    }

    public void setTipoAmbiente(String tipoAmbiente) {
        this.tipoAmbiente = tipoAmbiente;
    }

    public Date getFechaAmbiente() {
        return fechaAmbiente;
    }

    public void setFechaAmbiente(Date fechaAmbiente) {
        this.fechaAmbiente = fechaAmbiente;
    }

    public Ambiente getAmbienteSeleccionado() {
        return ambienteSeleccionado;
    }

    public void setAmbienteSeleccionado(Ambiente ambienteSeleccionado) {
        this.ambienteSeleccionado = ambienteSeleccionado;
    }

    public List<DisponibilidadAmbientesSemanal> getListaAmbientesDisponibles() {
        return listaAmbientesDisponibles;
    }

    public void setListaAmbientesDisponibles(List<DisponibilidadAmbientesSemanal> listaAmbientesDisponibles) {
        this.listaAmbientesDisponibles = listaAmbientesDisponibles;
    }

    public ServicioEquipo getServicioSeleccionado() {
        return servicioSeleccionado;
    }

    public void setServicioSeleccionado(ServicioEquipo servicioSeleccionado) {
        this.servicioSeleccionado = servicioSeleccionado;
    }
    // // </editor-fold>

    public boolean validarStrings(String s) {
        if (!s.equals("") && !s.isEmpty()) {
            return true;
        } else {
            return false;
        }
    }

    public void mostrarMensaje(String resumen, String detalle, FacesMessage.Severity severidad) {
        try {
            FacesMessage fm = new FacesMessage(severidad, resumen, detalle);
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        } catch (Exception e) {
            FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), e.getMessage());
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        }
    }

    //lizardo was here
    public String buscarPersonaPorDni() {
        try {
            dni = (dni != null) ? dni : "";
            persona = delegate.buscarDni(dni);
            if (persona.getSolCodigo() != null) {
                codigoSolicitante = persona.getSolCodigo();
                contratanteSeleccionado = true;
            } else {
                //persona = new PersonaNatural();
                codigoSolicitante = 0L;
                contratanteSeleccionado = false;
            }
            tipoPersona = 1;
        } catch (Exception ex) {
            mostrarMensaje("ERROR: ", "Al buscar el dni de la persona", FacesMessage.SEVERITY_ERROR);
            System.out.println("FATAL: " + ex.getMessage());
        }
        banTipo = 1; //para mostrar los datos de la persona
        return null;
    }

    public String buscarPersonaPorApellidosyNombres() {
        try {
            listaPersonas = delegate.buscarPersona(paterno, materno, nombres);
        } catch (Exception ex) {
            mostrarMensaje("ERROR: ", "Al buscar a la persona por apellidos y nombres", FacesMessage.SEVERITY_ERROR);
            System.out.println("FATAL: " + ex.getMessage());
        }
        banTipo = 2; //para mostrar los datos de la persona en una tabla
        return null;
    }

    public String buscarEmpresaPorRuc() {
        try {
            ruc = (ruc != null) ? ruc : "";
            //empresa = delegate.buscaRuc(ruc);
            empresa = delegate.buscaRucV2(ruc);
            if (empresa.getSolCodigo() != null) {
                codigoSolicitante = empresa.getSolCodigo();
                contratanteSeleccionado = true;
            } else {
                empresa = new PersonaJuridica();
                codigoSolicitante = 0L;
                contratanteSeleccionado = false;
            }
            tipoPersona = 0;
        } catch (Exception ex) {
            mostrarMensaje("ERROR: ", "Al buscar el ruc de la empresa", FacesMessage.SEVERITY_ERROR);
            System.out.println("FATAL: " + ex.getMessage());
        }
        banTipo = 3; //para mostrar los datos de la empresa
        return null;
    }

    public String buscarEmpresaPorRazonSocial() {
        try {
            razonSocial = (razonSocial != null) ? razonSocial : "";
            listaEmpresa = delegate.listaRazonSocial(razonSocial);
        } catch (Exception ex) {
            mostrarMensaje("ERROR: ", "Al buscar la razón social de la empresa", FacesMessage.SEVERITY_ERROR);
            System.out.println("FATAL: " + ex.getMessage());
        }
        banTipo = 4; //para mostrar los datos de la empresa
        return null;
    }

    public String seleccionarContratante() {
        contratanteSeleccionado = false;
        switch (banTipo) {
            case 1:

                break;
            case 2:
                if (personaSeleccionada != null) {
                    codigoSolicitante = personaSeleccionada.getSolCodigo();
                    contratanteSeleccionado = true;
                }
                break;
            case 3:

                break;

            case 4:
                if (empresaSeleccionada != null) {
                    codigoSolicitante = empresaSeleccionada.getSolCodigo();
                    contratanteSeleccionado = true;
                }
                break;
        }
        return null;
    }

    public String limpiarBusquedas() {
        dni = "";
        paterno = "";
        materno = "";
        nombres = "";
        ruc = "";
        razonSocial = "";
        banTipo = 0; 
        contratanteSeleccionado = false;
        //if (persona != null) {
            persona = new PersonaNatural();
        //}
//        if (empresa != null) {
            empresa = new PersonaJuridica();
//        }
        if (personaSeleccionada != null) {
            personaSeleccionada = new PersonaNatural();
        }
//        if (empresaSeleccionada != null) {
            empresaSeleccionada = new PersonaJuridica();
//        }
        listaPersonas = new ArrayList<PersonaNatural>();
        listaEmpresa  = new ArrayList<PersonaJuridica>();
        return null;
    }

    public String limpiarContratante () {
        limpiarBusquedas();
        personaNatural = new PersonaNatural();
        personaJuridica = new PersonaJuridica();
        return null;
    }

    public String crearContratoTemporal() {
        try {
            String strContratante = "";
            Contrato contrato = new Contrato();
            Solicitante solicitante = new Solicitante();
            ContratoDelegate delegadoContrato = new ContratoDelegate();
            SolicitanteDelegate delegadoSolicitante = new SolicitanteDelegate();
            dameSolCodigo();
            codigoSolicitante = (codigoSolicitante != null) ? codigoSolicitante : 0L;
            solicitante = delegadoSolicitante.buscarSolicitante(codigoSolicitante);
            System.out.println("tipo contrato: " + tipoContrato);

            if (solicitante == null) {
                mostrarMensaje("ERROR: ", "Debe seleccionar o buscar al contratante en el paso 1 ó paso 2....", FacesMessage.SEVERITY_ERROR);
                return null;
            }
            if (tipoPersona == 1) {
                strContratante = persona.getApellidoPersona();
            } else {
                strContratante = empresa.getEmprazonSocial();
            }
            dameNombreEvento();
            contrato.setContratante(strContratante);
            contrato.setConNombreEvento(nombreEvento);
            contrato.setCodmontoTotal(0D);
            contrato.setConsubTotal(0D);
            contrato.setConIGV(0D);
            contrato.setConApagar(0D);
            contrato.setConfechaContrato(new Date());
            contrato.setConVencimiento(new Date());
            contrato.setSolCodigo(solicitante);
            contrato.setConTipo(tipoContrato);
            contrato.setConTipoDscto(0);
            contrato.setConEstado(1);   //sin pagar, osea temporal
            //contrato.setConNumero("XXXXXXXXXXXXX");     //Falta interfaz de numeracion
            delegadoContrato.guardar_Contrato(contrato);
            mostrarMensaje("INFO: ", "Se registró exitosamente el contrato temporal, luego el contratante confirmará el contranto pagando en tesorería", FacesMessage.SEVERITY_INFO);
            tipoReserva = "true";
            contrato = null;
            solicitante = null;
            delegadoContrato = null;
            delegadoSolicitante = null;
        } catch (Exception ex) {
            mostrarMensaje("ERROR: ", "En registrar contrato temporal...", FacesMessage.SEVERITY_ERROR);
            System.out.println("FATAL: " + ex.getMessage());
            tipoReserva = "false";
        }
        return null;
    }


    public void dameSolCodigo() {
        if (persona.getSolCodigo() != null) {
            //codigoSolicitante = persona.getSolCodigo();
            tipoContrato = false;
        } else {
            if (personaSeleccionada.getSolCodigo() != null) {
                //codigoSolicitante = personaSeleccionada.getSolCodigo();
                tipoContrato = false;
            } else {
                if (empresa.getSolCodigo() != null) {
                    //codigoSolicitante = empresa.getSolCodigo();
                    tipoContrato = true;
                } else {
                    if (empresaSeleccionada.getSolCodigo() != null) {
                        //codigoSolicitante = empresaSeleccionada.getSolCodigo();
                        tipoContrato = true;
                    } else {
                        tipoContrato = null;
                    }
                }
            }
        }
    }

    public void dameSolCodigoV2() {
        switch (banTipo) {
            case 1:
                if (persona.getSolCodigo() != null) {
                    codigoSolicitante = persona.getSolCodigo();
                    tipoContrato = false;
                    tipoPersona = 1;
                    //mostrarPersona();
                }
                break;
            case 2:
                if (personaSeleccionada.getSolCodigo() != null) {
                    codigoSolicitante = personaSeleccionada.getSolCodigo();
                    tipoContrato = false;
                    tipoPersona = 1;
                    //mostrarPersonaV2();
                }
                break;
            case 3:
                if (empresa.getSolCodigo() != null) {
                    codigoSolicitante = empresa.getSolCodigo();
                    tipoContrato = true;
                    tipoPersona = 0;
                    //mostrarEmpresa();
                }
                break;
            case 4:
                if (empresaSeleccionada.getSolCodigo() != null) {
                    codigoSolicitante = empresaSeleccionada.getSolCodigo();
                    tipoContrato = true;
                    tipoPersona = 0;
                    //mostrarEmpresaV2();
                } else {
                    tipoContrato = null;
                }
                break;

        }
    }

    public String irAlPaso3() {
        dameSolCodigoV2();
        tabber = "reservas";
        return null;
    }

    public String registrarContratante() {
        dameSolCodigo();
        tabber = "reservas";
        return null;
    }

    //fin de lizardo estuvo aqui

    public String reservar() {
        cargarAmbientesDisponibles_Usuario();
        listaAmbientesDisponibles = null;
        //return "";
        return null;
    }

    public String consultar() {
        cargarAmbientesDisponibles_Usuario();
        listaAmbientesDisponibles1 = null;
        nombreEvento = null;
        return "";
    }

    //lizardo was here
    public String reservarAmbEquipos() {
        try {
            if (listaAmbientesDisponibles1.size() > 0) {
                if (validarReservas(listaAmbientesDisponibles1)) {
                    if (tipoReservacion == 5) {
                        if (validarStrings(nombreEvento)) {
                            realizarReserva();
                            mostrarMensaje("EXITO: ", "La reservas se realizó satisfactoriamente", FacesMessage.SEVERITY_INFO);
                            listaAmbientesDisponibles1 = null;
                            nombreEvento = null;
                        } else {
                            mostrarMensaje("ERROR: ", "Ingrese Nombre del Evento", FacesMessage.SEVERITY_ERROR);
                        }
                    } else {
                        realizarReserva();
                        mostrarMensaje("EXITO: ", "La reservas se realizó satisfactoriamente", FacesMessage.SEVERITY_INFO);
                        //limpiarContratante();
                        tabber = "busquedas";
                        inicializar();
                        limpiarBusquedas();
                        listaAmbientesDisponibles1 = null;
                    }
                } else {
                    mostrarMensaje("ERROR: ", "Seleccione por lo Menos una fecha para Reserva", FacesMessage.SEVERITY_ERROR);
                }
                return "";
            } else {
                mostrarMensaje("ERROR: ", "Busque y Seleccione una reserva", FacesMessage.SEVERITY_ERROR);
                inicializar();
                return "";
            }
        } catch (Exception ex) {
            mostrarMensaje("ERROR: ", "Busque y Seleccione una reserva1", FacesMessage.SEVERITY_ERROR);
            System.out.println("FATAL " + ex.toString());
            inicializar();
            return "";
        }
    }

    public void realizarReserva() {
        try {
            //lizardo was here
            Contrato contrato = new Contrato();
            if (tipoReservacion == 3) {
                crearContratoTemporal();
                ContratoDelegate delegadoContrato = new ContratoDelegate();
                contrato = delegadoContrato.buscarUltimoContrato();
                if (contrato == null) {
                    mostrarMensaje("ERROR: ", "En el registro automático del contrato temporal", FacesMessage.SEVERITY_ERROR);
                }
            } else {
                contrato = null;
            }
            
            Preevento preevento = new Preevento();
            preevento = dameNombreEvento();
            for (DisponibilidadAmbientesSemanal disp : listaAmbientesDisponibles1) {
                if (disp.getReservarLunes()) {
                    ReservaAmbiente res = new ReservaAmbiente();
                    res.setReaFecha(disp.getFechaLunes());
                    res.setReaNombreEvento(nombreEvento);
                    res.setReaTipoec(tipoModalidad);
                    res.setRealugarReunion(lugarReunion);

                    res.setReahoraFin(disp.getHoraFin());
                    res.setReahoraInicio(disp.getHoraInicio());
                    disp.setTipoAmbiente((tipoReservacion == 3) ? disp.getTipoAmbiente() : null);

                    if (disp.getTipoAmbiente() != null) {
                        if (disp.getTipoAmbiente() == 0) {
                            res.setAmbCodigo(disp.getAmbiente());
                            res.setReamontoParcial(disp.getAmbiente().getAmbCosto());
                            res.setReaTipoae(0);
                        } else {
                            res.setSerCodigo(disp.getServicio());
                            res.setReamontoParcial(disp.getServicio().getSerCosto());
                            res.setReaTipoae(1);
                        }
                    } else {
                        res.setAmbCodigo(null);
                        res.setSerCodigo(null);
                        res.setReamontoParcial(null);
                        res.setReaTipoae(null);
                    }

                    res.setReaEstado("RESERVADO");
                    res.setContrato(contrato);      //lizardo was here
                    res.setEveCodigo(preevento);    //lizardo was here
                    delegate.registrarV2(res);
                    res = null;
                }
                if (disp.getReservarMartes()) {
                    ReservaAmbiente res = new ReservaAmbiente();
                    res.setReaFecha(disp.getFechaMartes());
                    res.setReaNombreEvento(nombreEvento);
                    res.setReaTipoec(tipoModalidad);
                    res.setRealugarReunion(lugarReunion);

                    res.setReahoraFin(disp.getHoraFin());
                    res.setReahoraInicio(disp.getHoraInicio());
                    disp.setTipoAmbiente((tipoReservacion == 3) ? disp.getTipoAmbiente() : null);
                    if (disp.getTipoAmbiente() != null) {
                        if (disp.getTipoAmbiente() == 0) {
                            res.setAmbCodigo(disp.getAmbiente());
                            res.setReamontoParcial(disp.getAmbiente().getAmbCosto());
                            res.setReaTipoae(0);
                        } else {
                            res.setSerCodigo(disp.getServicio());
                            res.setReamontoParcial(disp.getServicio().getSerCosto());
                            res.setReaTipoae(1);
                        }
                    } else {
                        res.setAmbCodigo(null);
                        res.setSerCodigo(null);
                        res.setReamontoParcial(null);
                        res.setReaTipoae(null);
                    }
                    res.setReaEstado("RESERVADO");
                    res.setContrato(contrato);      //lizardo was here
                    res.setEveCodigo(preevento);    //lizardo was here
                    delegate.registrarV2(res);
                    System.out.println("PASO REGISTRO DE AMBIENTES");
                    res = null;
                }
                if (disp.getReservarMiercoles()) {
                    ReservaAmbiente res = new ReservaAmbiente();
                    res.setReaFecha(disp.getFechaMiercoles());
                    res.setReaNombreEvento(nombreEvento);
                    res.setReaTipoec(tipoModalidad);
                    res.setRealugarReunion(lugarReunion);

                    res.setReahoraFin(disp.getHoraFin());
                    res.setReahoraInicio(disp.getHoraInicio());
                    disp.setTipoAmbiente((tipoReservacion == 3) ? disp.getTipoAmbiente() : null);
                    if (disp.getTipoAmbiente() != null) {
                        if (disp.getTipoAmbiente() == 0) {
                            res.setAmbCodigo(disp.getAmbiente());
                            res.setReamontoParcial(disp.getAmbiente().getAmbCosto());
                            res.setReaTipoae(0);
                        } else {
                            res.setSerCodigo(disp.getServicio());
                            res.setReamontoParcial(disp.getServicio().getSerCosto());
                            res.setReaTipoae(1);
                        }
                    } else {
                        res.setAmbCodigo(null);
                        res.setSerCodigo(null);
                        res.setReamontoParcial(null);
                        res.setReaTipoae(null);
                    }
                    res.setReaEstado("RESERVADO");
                    res.setContrato(contrato);      //lizardo was here
                    res.setEveCodigo(preevento);    //lizardo was here
                    delegate.registrarV2(res);
                    res = null;
                }
                if (disp.getReservarJueves()) {
                    ReservaAmbiente res = new ReservaAmbiente();
                    res.setReaFecha(disp.getFechaJueves());
                    res.setReaNombreEvento(nombreEvento);
                    res.setReaTipoec(tipoModalidad);
                    res.setRealugarReunion(lugarReunion);

                    res.setReahoraFin(disp.getHoraFin());
                    res.setReahoraInicio(disp.getHoraInicio());
                    disp.setTipoAmbiente((tipoReservacion == 3) ? disp.getTipoAmbiente() : null);
                    if (disp.getTipoAmbiente() != null) {
                        if (disp.getTipoAmbiente() == 0) {
                            res.setAmbCodigo(disp.getAmbiente());
                            res.setReamontoParcial(disp.getAmbiente().getAmbCosto());
                            res.setReaTipoae(0);
                        } else {
                            res.setSerCodigo(disp.getServicio());
                            res.setReamontoParcial(disp.getServicio().getSerCosto());
                            res.setReaTipoae(1);
                        }
                    } else {
                        res.setAmbCodigo(null);
                        res.setSerCodigo(null);
                        res.setReamontoParcial(null);
                        res.setReaTipoae(null);
                    }
                    res.setReaEstado("RESERVADO");
                    res.setContrato(contrato);      //lizardo was here
                    res.setEveCodigo(preevento);    //lizardo was here
                    delegate.registrarV2(res);
                    res = null;
                }
                if (disp.getReservarViernes()) {
                    ReservaAmbiente res = new ReservaAmbiente();
                    res.setReaFecha(disp.getFechaViernes());
                    res.setReaNombreEvento(nombreEvento);
                    res.setReaTipoec(tipoModalidad);
                    res.setRealugarReunion(lugarReunion);

                    res.setReahoraFin(disp.getHoraFin());
                    res.setReahoraInicio(disp.getHoraInicio());
                    disp.setTipoAmbiente((tipoReservacion == 3) ? disp.getTipoAmbiente() : null);
                    if (disp.getTipoAmbiente() != null) {
                        if (disp.getTipoAmbiente() == 0) {
                            res.setAmbCodigo(disp.getAmbiente());
                            res.setReamontoParcial(disp.getAmbiente().getAmbCosto());
                            res.setReaTipoae(0);
                        } else {
                            res.setSerCodigo(disp.getServicio());
                            res.setReamontoParcial(disp.getServicio().getSerCosto());
                            res.setReaTipoae(1);
                        }
                    } else {
                        res.setAmbCodigo(null);
                        res.setSerCodigo(null);
                        res.setReamontoParcial(null);
                        res.setReaTipoae(null);
                    }
                    res.setReaEstado("RESERVADO");
                    res.setContrato(contrato);      //lizardo was here
                    res.setEveCodigo(preevento);    //lizardo was here
                    delegate.registrarV2(res);
                    res = null;
                }
                if (disp.getReservarSabado()) {
                    ReservaAmbiente res = new ReservaAmbiente();
                    res.setReaFecha(disp.getFechaSabado());
                    res.setReaNombreEvento(nombreEvento);
                    res.setReaTipoec(tipoModalidad);
                    res.setRealugarReunion(lugarReunion);

                    res.setReahoraFin(disp.getHoraFin());
                    res.setReahoraInicio(disp.getHoraInicio());
                    disp.setTipoAmbiente((tipoReservacion == 3) ? disp.getTipoAmbiente() : null);
                    if (disp.getTipoAmbiente() != null) {
                        if (disp.getTipoAmbiente() == 0) {
                            res.setAmbCodigo(disp.getAmbiente());
                            res.setReamontoParcial(disp.getAmbiente().getAmbCosto());
                            res.setReaTipoae(0);
                        } else {
                            res.setSerCodigo(disp.getServicio());
                            res.setReamontoParcial(disp.getServicio().getSerCosto());
                            res.setReaTipoae(1);
                        }
                    } else {
                        res.setAmbCodigo(null);
                        res.setSerCodigo(null);
                        res.setReamontoParcial(null);
                        res.setReaTipoae(null);
                    }
                    res.setReaEstado("RESERVADO");
                    res.setContrato(contrato);      //lizardo was here
                    res.setEveCodigo(preevento);    //lizardo was here
                    delegate.registrarV2(res);
                    res = null;
                }
                if (disp.getReservarDomingo()) {
                    ReservaAmbiente res = new ReservaAmbiente();
                    res.setReaFecha(disp.getFechaDomingo());
                    res.setReaNombreEvento(nombreEvento);
                    res.setReaTipoec(tipoModalidad);
                    res.setRealugarReunion(lugarReunion);

                    res.setReahoraFin(disp.getHoraFin());
                    res.setReahoraInicio(disp.getHoraInicio());
                    disp.setTipoAmbiente((tipoReservacion == 3) ? disp.getTipoAmbiente() : null);
                    if (disp.getTipoAmbiente() != null) {
                        if (disp.getTipoAmbiente() == 0) {
                            res.setAmbCodigo(disp.getAmbiente());
                            res.setReamontoParcial(disp.getAmbiente().getAmbCosto());
                            res.setReaTipoae(0);
                        } else {
                            res.setSerCodigo(disp.getServicio());
                            res.setReamontoParcial(disp.getServicio().getSerCosto());
                            res.setReaTipoae(1);
                        }
                    } else {
                        res.setAmbCodigo(null);
                        res.setSerCodigo(null);
                        res.setReamontoParcial(null);
                        res.setReaTipoae(null);
                    }
                    res.setReaEstado("RESERVADO");
                    res.setContrato(contrato);      //lizardo was here
                    res.setEveCodigo(preevento);    //lizardo was here
                    delegate.registrarV2(res);
                    res = null;
                }
            }
            preevento = null;
            if (tipoReservacion == 3) {
                actualizarSubTotalContratoTemporal();
            }
            System.out.println("PASO TODO EL METODO registrarReserva");
        } catch (Exception e) {
            //lizardo was here
            mostrarMensaje("ERROR: ", "En reservar los ambiente o equipos", FacesMessage.SEVERITY_ERROR);
            System.out.println("FATAL: " + e.getMessage());
        }
    }

    public void actualizarSubTotalContratoTemporal() {
        try {
            Contrato contrato = new Contrato();
            ContratoDelegate delegadoContrato = new ContratoDelegate();
            contrato = delegadoContrato.buscarUltimoContrato();
            if (contrato == null) {
                mostrarMensaje("ERROR: ", "No se encontro el ultimo contrato registrado", FacesMessage.SEVERITY_ERROR);
            }
            Double subTotal = 0D;
            List<ReservaAmbiente> lista = new ArrayList<ReservaAmbiente>();
            lista = delegate.listarReservas(contrato.getConCodigo());
            for (ReservaAmbiente res : lista) {
                subTotal += res.getReamontoParcial();
            }
            contrato.setConsubTotal(subTotal);
            delegadoContrato.actualizar_Contrato(contrato);
            mostrarMensaje("INFO: ", "Se actualizó exitosamente el Sub Total del Contrato temporal", FacesMessage.SEVERITY_INFO);
            contrato = null;
            delegadoContrato = null;
            lista = null;
        } catch (Exception ex) {
            mostrarMensaje("ERROR: ", "En actualizar sub total del contrato temporal...", FacesMessage.SEVERITY_ERROR);
            System.out.println("FATAL: " + ex.getMessage());
        }
    }

    //lizardo estuvo aqui
    public Preevento dameNombreEvento() {
        Preevento preevento = new Preevento();
        PreEventoDelegate delegadoPreevento = new PreEventoDelegate();
        codEvento = (codEvento != null) ? codEvento : 0;
        preevento = delegadoPreevento.findID(codEvento);
        String evento = (preevento != null) ? preevento.getPreNombre() : "evento";
        if (preevento != null) {
            if (preevento.getPreEstado().compareTo("APROBADO")==0) {
                tipoModalidad = 6;
            } else {
                tipoModalidad = 0;
            }
        }
        switch (tipoReservacion) {
            case 0: nombreEvento = "Cumpleaños";                                        break;
            case 1: nombreEvento = evento;                                              break;
            case 2: nombreEvento = "Feriados";                                          break;
            case 3: nombreEvento = evento + " (Contrato)";                              break;
            case 4: nombreEvento = "No Disponible";                                     break;
            case 5: nombreEvento = (nombreReserva != null) ? nombreReserva : "otro";    break;
        }
        delegadoPreevento = null;
        return preevento;
    }

    public String cargarAmbientesDisponibles_Usuario() {
        listaAmbientesDisponibles = new ArrayList<DisponibilidadAmbientesSemanal>();
        listaAmbientesDisponibles1 = new ArrayList<DisponibilidadAmbientesSemanal>();
        Calendar c = Calendar.getInstance();
        c.setTime(fechaAmbiente);
        int dia = c.get(Calendar.DAY_OF_WEEK);
        List<ReservaAmbiente> listaReservaLunes = new ArrayList<ReservaAmbiente>();
        List<ReservaAmbiente> listaReservaMartes = new ArrayList<ReservaAmbiente>();
        List<ReservaAmbiente> listaReservaMiercoles = new ArrayList<ReservaAmbiente>();
        List<ReservaAmbiente> listaReservaJueves = new ArrayList<ReservaAmbiente>();
        List<ReservaAmbiente> listaReservaViernes = new ArrayList<ReservaAmbiente>();
        List<ReservaAmbiente> listaReservaSabado = new ArrayList<ReservaAmbiente>();
        List<ReservaAmbiente> listaReservaDomingo = new ArrayList<ReservaAmbiente>();
        Calendar cLunes = Calendar.getInstance();
        Calendar cMartes = Calendar.getInstance();
        Calendar cMiercoles = Calendar.getInstance();
        Calendar cJueves = Calendar.getInstance();
        Calendar cViernes = Calendar.getInstance();
        Calendar cSabado = Calendar.getInstance();
        Calendar cDomingo = Calendar.getInstance();
        cLunes.setTime(fechaAmbiente);
        cMartes.setTime(fechaAmbiente);
        cMiercoles.setTime(fechaAmbiente);
        cJueves.setTime(fechaAmbiente);
        cViernes.setTime(fechaAmbiente);
        cSabado.setTime(fechaAmbiente);
        cDomingo.setTime(fechaAmbiente);
        switch (dia) {
            case 1:
                //Domingo
                cLunes.add(Calendar.DATE, -6);
                cMartes.add(Calendar.DATE, -5);
                cMiercoles.add(Calendar.DATE, -4);
                cJueves.add(Calendar.DATE, -3);
                cViernes.add(Calendar.DATE, -2);
                cSabado.add(Calendar.DATE, -1);
                break;
            case 2:
                //Lunes
                cMartes.add(Calendar.DATE, 1);
                cMiercoles.add(Calendar.DATE, 2);
                cJueves.add(Calendar.DATE, 3);
                cViernes.add(Calendar.DATE, 4);
                cSabado.add(Calendar.DATE, 5);
                cDomingo.add(Calendar.DATE, 6);
                break;
            case 3:
                //Martes
                //intentando corregir, no aparece la casilla
                //cLunes.add(Calendar.DATE, -1);
                cLunes.add(Calendar.DATE, -1);
                cMiercoles.add(Calendar.DATE, 1);
                cJueves.add(Calendar.DATE, 2);
                cViernes.add(Calendar.DATE, 3);
                cSabado.add(Calendar.DATE, 4);
                cDomingo.add(Calendar.DATE, 5);
                break;
            case 4:
                //Miercoles
                cLunes.add(Calendar.DATE, -2);
                cMartes.add(Calendar.DATE, -1);
                cJueves.add(Calendar.DATE, 1);
                cViernes.add(Calendar.DATE, 2);
                cSabado.add(Calendar.DATE, 3);
                cDomingo.add(Calendar.DATE, 4);
                break;
            case 5:
                //Jueves
                cLunes.add(Calendar.DATE, -3);
                cMartes.add(Calendar.DATE, -2);
                cMiercoles.add(Calendar.DATE, -1);
                cViernes.add(Calendar.DATE, 1);
                cSabado.add(Calendar.DATE, 2);
                cDomingo.add(Calendar.DATE, 3);
                break;
            case 6:
                //Viernes
                cLunes.add(Calendar.DATE, -4);
                cMartes.add(Calendar.DATE, -3);
                cMiercoles.add(Calendar.DATE, -2);
                cJueves.add(Calendar.DATE, -1);
                cSabado.add(Calendar.DATE, 1);
                cDomingo.add(Calendar.DATE, 2);
                break;
            case 7:
                //Sabado
                cLunes.add(Calendar.DATE, -5);
                cMartes.add(Calendar.DATE, -4);
                cMiercoles.add(Calendar.DATE, -3);
                cJueves.add(Calendar.DATE, -2);
                cViernes.add(Calendar.DATE, -1);
                cDomingo.add(Calendar.DATE, 1);
                break;
        }
        try {
            //update by lizardo
            if (tipoReservacion == 3) {
                if (tipoAmbiente.equals("1")) {//Ambiente
                    listaReservaLunes = delegate.listarReserva_Dia(cLunes.getTime(), ambienteSeleccionado);
                    listaReservaMartes = delegate.listarReserva_Dia(cMartes.getTime(), ambienteSeleccionado);
                    listaReservaMiercoles = delegate.listarReserva_Dia(cMiercoles.getTime(), ambienteSeleccionado);
                    listaReservaJueves = delegate.listarReserva_Dia(cJueves.getTime(), ambienteSeleccionado);
                    listaReservaViernes = delegate.listarReserva_Dia(cViernes.getTime(), ambienteSeleccionado);
                    listaReservaSabado = delegate.listarReserva_Dia(cSabado.getTime(), ambienteSeleccionado);
                    listaReservaDomingo = delegate.listarReserva_Dia(cDomingo.getTime(), ambienteSeleccionado);
                } else {//Servicio Equipo
                    listaReservaLunes = delegate.listarReserva_Dia(cLunes.getTime(), servicioSeleccionado);
                    listaReservaMartes = delegate.listarReserva_Dia(cMartes.getTime(), servicioSeleccionado);
                    listaReservaMiercoles = delegate.listarReserva_Dia(cMiercoles.getTime(), servicioSeleccionado);
                    listaReservaJueves = delegate.listarReserva_Dia(cJueves.getTime(), servicioSeleccionado);
                    listaReservaViernes = delegate.listarReserva_Dia(cViernes.getTime(), servicioSeleccionado);
                    listaReservaSabado = delegate.listarReserva_Dia(cSabado.getTime(), servicioSeleccionado);
                    listaReservaDomingo = delegate.listarReserva_Dia(cDomingo.getTime(), servicioSeleccionado);
                }
            } else {
                listaReservaLunes = delegate.listarReserva_Dia(cLunes.getTime());
                listaReservaMartes = delegate.listarReserva_Dia(cMartes.getTime());
                listaReservaMiercoles = delegate.listarReserva_Dia(cMiercoles.getTime());
                listaReservaJueves = delegate.listarReserva_Dia(cJueves.getTime());
                listaReservaViernes = delegate.listarReserva_Dia(cViernes.getTime());
                listaReservaSabado = delegate.listarReserva_Dia(cSabado.getTime());
                listaReservaDomingo = delegate.listarReserva_Dia(cDomingo.getTime());
            }
            

            //String rojo = "#FEC983";
            String rojo = "#E66969";
            String verde = "#00FF00";
            String azul = "#0000FF";
            for (int i = 7; i < 24; i++) {
                //i=Hora Inicio,j=Hora Fin
                int j = i + 1;
                boolean var = true;
                DisponibilidadAmbientesSemanal disp = new DisponibilidadAmbientesSemanal();
                disp.setFechaDomingo(cDomingo.getTime());
                disp.setFechaSabado(cSabado.getTime());
                disp.setFechaViernes(cViernes.getTime());
                disp.setFechaJueves(cJueves.getTime());
                disp.setFechaMiercoles(cMiercoles.getTime());
                disp.setFechaMartes(cMartes.getTime());
                disp.setFechaLunes(cLunes.getTime());
                if (i == 7) {
                    SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
                    DisponibilidadAmbientesSemanal disp1 = new DisponibilidadAmbientesSemanal();
                    disp1.setLunes(formato.format(cLunes.getTime()));
                    disp1.setMartes(formato.format(cMartes.getTime()));
                    disp1.setMiercoles(formato.format(cMiercoles.getTime()));
                    disp1.setJueves(formato.format(cJueves.getTime()));
                    disp1.setViernes(formato.format(cViernes.getTime()));
                    disp1.setSabado(formato.format(cSabado.getTime()));
                    disp1.setDomingo(formato.format(cDomingo.getTime()));
                    disp1.setColorLunes("#F4F4F4");
                    disp1.setColorMartes("#F4F4F4");
                    disp1.setColorMiercoles("#F4F4F4");
                    disp1.setColorJueves("#F4F4F4");
                    disp1.setColorViernes("#F4F4F4");
                    disp1.setColorSabado("#F4F4F4");
                    disp1.setColorDomingo("#F4F4F4");
                    disp1.setEstadoLunes(true);
                    disp1.setEstadoMartes(true);
                    disp1.setEstadoMiercoles(true);
                    disp1.setEstadoJueves(true);
                    disp1.setEstadoViernes(true);
                    disp1.setEstadoSabado(true);
                    disp1.setEstadoDomingo(true);
                    listaAmbientesDisponibles.add(disp1);
                    listaAmbientesDisponibles1.add(disp1);
                }
                String name = null;
                //LLenar Lunes
                //lizardo estuvo aqui
                try {
                    for (ReservaAmbiente res : listaReservaLunes) {
                        if (res.getReahoraInicio() == i) {
                            var = false;
                            disp.setEstadoLunes(false);//Desabilitado
                            if (tipoAmbiente.equals("1")) {//Ambiente
                                disp.setAmbiente(ambienteSeleccionado);
                                disp.setTipoAmbiente(0);
                            } else {//Servicio Equipo
                                disp.setServicio(servicioSeleccionado);
                                disp.setTipoAmbiente(1);
                            }

                            Integer tipoRes = (res.getReaTipoec() == null) ? 7 : res.getReaTipoec();
                            switch (tipoRes) {
                                case 0: //evento reservado
                                    if (res.getEveCodigo().getPreNombre().length() > 30) {
                                        name = res.getEveCodigo().getPreNombre().substring(0, 30);
                                    } else {
                                        name = res.getEveCodigo().getPreNombre();
                                    }
                                    disp.setColorLunes(azul);
                                    break;
                                case 1: //contrato
                                    if (res.getContrato().getConNombreEvento().length() > 30) {
                                        name = res.getContrato().getConNombreEvento().substring(0, 30);
                                    } else {
                                        name = res.getContrato().getConNombreEvento();
                                    }
                                    disp.setColorLunes(azul);
                                    break;
                                case 2: //cumpleaños
                                    if (res.getReaNombreEvento().length() > 30) {
                                        name = res.getReaNombreEvento().substring(0, 30);
                                    } else {
                                        name = res.getReaNombreEvento();
                                    }
                                    //name += " " + res.getRea
                                    disp.setColorLunes(verde);
                                    break;
                                case 3: //no disponible
                                    name = "NO DISPONIBLE";
                                    disp.setColorLunes(rojo);
                                    break;
                                case 4: //feriados
                                    name = "FERIADO: " + res.getReaNombreEvento();
                                    disp.setColorLunes(rojo);
                                    break;
                                case 5: //reuniones
                                    name = res.getRealugarReunion();
                                    disp.setColorLunes(verde);
                                    break;
                                case 6: //evento aprobado
                                    if (res.getEveCodigo().getPreNombre().length() > 30) {
                                        name = res.getEveCodigo().getPreNombre().substring(0, 30);
                                    } else {
                                        name = res.getEveCodigo().getPreNombre();
                                    }
                                    disp.setColorLunes(azul);
                                    break;
                                case 7: //
                                    name = "OTROS: " + res.getReaNombreEvento();
                                    disp.setColorLunes(verde);
                                    break;
                            }
                            disp.setCodigoLunes(res);
                            disp.setLunes(name);
                        }
                    }
                    if (var) {
                        if (tipoAmbiente.equals("1")) {//Ambiente
                            disp.setAmbiente(ambienteSeleccionado);
                            disp.setTipoAmbiente(0);
                        } else {//Servicio Equipo
                            disp.setServicio(servicioSeleccionado);
                            disp.setTipoAmbiente(1);
                        }
                        if (new Date().compareTo(disp.getFechaLunes()) >= 0) {
                            disp.setEstadoLunes(false);
                        }
                        if (new Date(new Date().getYear(), new Date().getMonth(), new Date().getDate()).compareTo(disp.getFechaLunes()) == 0) {
                            disp.setEstadoLunes(true);
                        }
                        disp.setLunes("Disponible");
                    }
                    disp.setHorarios(Utiles.rellenarCeros(Utiles.aCadena(i), 2) + ":00-" + Utiles.rellenarCeros(Utiles.aCadena(j), 2) + ":00");
                    disp.setHoraInicio(i + 0.0);
                    disp.setHoraFin(j + 0.0);
                    var = true;
                } catch (Exception ex) {}
                
                //Martes
                //lizardo estuvo aqui
                try {
                    for (ReservaAmbiente res : listaReservaMartes) {
                        if (res.getReahoraInicio() == i) {
                            var = false;
                            disp.setEstadoMartes(false);//Desabilitado
                            if (tipoAmbiente.equals("1")) {//Ambiente
                                disp.setAmbiente(ambienteSeleccionado);
                                disp.setTipoAmbiente(0);
                            } else {//Servicio Equipo
                                disp.setServicio(servicioSeleccionado);
                                disp.setTipoAmbiente(1);
                            }
                            Integer tipoRes = (res.getReaTipoec() == null) ? 7 : res.getReaTipoec();
                            switch (tipoRes) {
                                case 0: //evento reservado
                                    if (res.getEveCodigo().getPreNombre().length() > 30) {
                                        name = res.getEveCodigo().getPreNombre().substring(0, 30);
                                    } else {
                                        name = res.getEveCodigo().getPreNombre();
                                    }
                                    disp.setColorMartes(azul);
                                    break;
                                case 1: //contrato
                                    if (res.getContrato().getConNombreEvento().length() > 30) {
                                        name = res.getContrato().getConNombreEvento().substring(0, 30);
                                    } else {
                                        name = res.getContrato().getConNombreEvento();
                                    }
                                    disp.setColorMartes(azul);
                                    break;
                                case 2: //cumpleaños
                                    if (res.getReaNombreEvento().length() > 30) {
                                        name = res.getReaNombreEvento().substring(0, 30);
                                    } else {
                                        name = res.getReaNombreEvento();
                                    }
                                    disp.setColorMartes(verde);
                                    break;
                                case 3: //no disponible
                                    name = "NO DISPONIBLE";
                                    disp.setColorMartes(rojo);
                                    break;
                                case 4: //feriados
                                    name = "FERIADO";
                                    disp.setColorMartes(rojo);
                                    break;
                                case 5: //reuniones
                                    name = res.getRealugarReunion();
                                    disp.setColorMartes(verde);
                                    break;
                                case 6: //evento aprobado
                                    if (res.getEveCodigo().getPreNombre().length() > 30) {
                                        name = res.getEveCodigo().getPreNombre().substring(0, 30);
                                    } else {
                                        name = res.getEveCodigo().getPreNombre();
                                    }
                                    disp.setColorMartes(azul);
                                    break;
                                case 7: //
                                    name = "OTROS";
                                    disp.setColorMartes(verde);
                                    break;
                            }
                            disp.setCodigoMartes(res);
                            disp.setMartes(name);
                        }
                    }
                    if (var) {
                        if (tipoAmbiente.equals("1")) {//Ambiente
                            disp.setAmbiente(ambienteSeleccionado);
                            disp.setTipoAmbiente(0);
                        } else {//Servicio Equipo
                            disp.setServicio(servicioSeleccionado);
                            disp.setTipoAmbiente(1);
                        }
                        if (new Date().compareTo(disp.getFechaMartes()) >= 0) {
                            disp.setEstadoMartes(false);
                        }
                        if (new Date(new Date().getYear(), new Date().getMonth(), new Date().getDate()).compareTo(disp.getFechaMartes()) == 0) {
                            disp.setEstadoMartes(true);
                        }
                        disp.setMartes("Disponible");
                    }
                    var = true;
                } catch (Exception ex) {
                    System.out.println("FATAL: " + ex.getMessage());
                }
                
                //Miercoles
                //lizardo estuvo aqui
                try {
                    for (ReservaAmbiente res : listaReservaMiercoles) {
                        if (res.getReahoraInicio() == i) {
                            var = false;
                            disp.setEstadoMiercoles(false);//Desabilitado
                            if (tipoAmbiente.equals("1")) {//Ambiente
                                disp.setAmbiente(ambienteSeleccionado);
                                disp.setTipoAmbiente(0);
                            } else {//Servicio Equipo
                                disp.setServicio(servicioSeleccionado);
                                disp.setTipoAmbiente(1);
                            }
                            Integer tipoRes = (res.getReaTipoec() == null) ? 7 : res.getReaTipoec();
                            switch (tipoRes) {
                                case 0: //evento reservado
                                    if (res.getEveCodigo().getPreNombre().length() > 30) {
                                        name = res.getEveCodigo().getPreNombre().substring(0, 30);
                                    } else {
                                        name = res.getEveCodigo().getPreNombre();
                                    }
                                    disp.setColorMiercoles(azul);
                                    break;
                                case 1: //contrato
                                    if (res.getContrato().getConNombreEvento().length() > 30) {
                                        name = res.getContrato().getConNombreEvento().substring(0, 30);
                                    } else {
                                        name = res.getContrato().getConNombreEvento();
                                    }
                                    disp.setColorMiercoles(azul);
                                    break;
                                case 2: //cumpleaños
                                    if (res.getReaNombreEvento().length() > 30) {
                                        name = res.getReaNombreEvento().substring(0, 30);
                                    } else {
                                        name = res.getReaNombreEvento();
                                    }
                                    disp.setColorMiercoles(verde);
                                    break;
                                case 3: //no disponible
                                    name = "NO DISPONIBLE";
                                    disp.setColorMiercoles(rojo);
                                    break;
                                case 4: //feriados
                                    name = "FERIADO";
                                    disp.setColorMiercoles(rojo);
                                    break;
                                case 5: //reuniones
                                    name = res.getRealugarReunion();
                                    disp.setColorMiercoles(verde);
                                    break;
                                case 6: //evento aprobado
                                    if (res.getEveCodigo().getPreNombre().length() > 30) {
                                        name = res.getEveCodigo().getPreNombre().substring(0, 30);
                                    } else {
                                        name = res.getEveCodigo().getPreNombre();
                                    }
                                    disp.setColorMiercoles(azul);
                                    break;
                                case 7: //
                                    name = "OTROS";
                                    disp.setColorMiercoles(verde);
                                    break;
                            }
                            disp.setCodigoMiercoles(res);
                            disp.setMiercoles(name);
                        }
                    }
                    if (var) {
                        if (tipoAmbiente.equals("1")) {//Ambiente
                            disp.setAmbiente(ambienteSeleccionado);
                            disp.setTipoAmbiente(0);
                        } else {//Servicio Equipo
                            disp.setServicio(servicioSeleccionado);
                            disp.setTipoAmbiente(1);
                        }
                        if (new Date().compareTo(disp.getFechaMiercoles()) >= 0) {
                            disp.setEstadoMiercoles(false);
                        }
                        if (new Date(new Date().getYear(), new Date().getMonth(), new Date().getDate()).compareTo(disp.getFechaMiercoles()) == 0) {
                            disp.setEstadoMiercoles(true);
                        }
                        disp.setMiercoles("Disponible");
                    }
                    var = true;
                } catch (Exception ex) {}
                
                //Jueves
                //lizardo estuvo aqui
                try {
                    for (ReservaAmbiente res : listaReservaJueves) {
                        if (res.getReahoraInicio() == i) {
                            var = false;
                            disp.setEstadoJueves(false);//Desabilitado
                            if (tipoAmbiente.equals("1")) {//Ambiente
                                disp.setAmbiente(ambienteSeleccionado);
                                disp.setTipoAmbiente(0);
                            } else {//Servicio Equipo
                                disp.setServicio(servicioSeleccionado);
                                disp.setTipoAmbiente(1);
                            }
                            Integer tipoRes = (res.getReaTipoec() == null) ? 7 : res.getReaTipoec();
                            switch (tipoRes) {
                                case 0: //evento reservado
                                    if (res.getEveCodigo().getPreNombre().length() > 30) {
                                        name = res.getEveCodigo().getPreNombre().substring(0, 30);
                                    } else {
                                        name = res.getEveCodigo().getPreNombre();
                                    }
                                    disp.setColorJueves(azul);
                                    break;
                                case 1: //contrato
                                    if (res.getContrato().getConNombreEvento().length() > 30) {
                                        name = res.getContrato().getConNombreEvento().substring(0, 30);
                                    } else {
                                        name = res.getContrato().getConNombreEvento();
                                    }
                                    disp.setColorJueves(azul);
                                    break;
                                case 2: //cumpleaños
                                    if (res.getReaNombreEvento().length() > 30) {
                                        name = res.getReaNombreEvento().substring(0, 30);
                                    } else {
                                        name = res.getReaNombreEvento();
                                    }
                                    disp.setColorJueves(verde);
                                    break;
                                case 3: //no disponible
                                    name = "NO DISPONIBLE";
                                    disp.setColorJueves(rojo);
                                    break;
                                case 4: //feriados
                                    name = "FERIADO";
                                    disp.setColorJueves(rojo);
                                    break;
                                case 5: //reuniones
                                    name = res.getRealugarReunion();
                                    disp.setColorJueves(verde);
                                    break;
                                case 6: //evento aprobado
                                    if (res.getEveCodigo().getPreNombre().length() > 30) {
                                        name = res.getEveCodigo().getPreNombre().substring(0, 30);
                                    } else {
                                        name = res.getEveCodigo().getPreNombre();
                                    }
                                    disp.setColorJueves(azul);
                                    break;
                                case 7: //
                                    name = "OTROS";
                                    disp.setColorJueves(verde);
                                    break;
                            }
                            disp.setCodigoJueves(res);
                            disp.setJueves(name);
                        }
                    }
                    if (var) {
                        if (tipoAmbiente.equals("1")) {//Ambiente
                            disp.setAmbiente(ambienteSeleccionado);
                            disp.setTipoAmbiente(0);
                        } else {//Servicio Equipo
                            disp.setServicio(servicioSeleccionado);
                            disp.setTipoAmbiente(1);
                        }
                        if (new Date().compareTo(disp.getFechaJueves()) >= 0) {
                            disp.setEstadoJueves(false);
                        }
                        if (new Date(new Date().getYear(), new Date().getMonth(), new Date().getDate()).compareTo(disp.getFechaJueves()) == 0) {
                            disp.setEstadoJueves(true);
                        }
                        disp.setJueves("Disponible");
                    }
                    var = true;
                } catch (Exception ex) {}
                
                //Viernes
                //lizardo estuvo aqui
                try {
                    for (ReservaAmbiente res : listaReservaViernes) {
                        if (res.getReahoraInicio() == i) {
                            var = false;
                            disp.setEstadoViernes(false);//Desabilitado
                            if (tipoAmbiente.equals("1")) {//Ambiente
                                disp.setAmbiente(ambienteSeleccionado);
                                disp.setTipoAmbiente(0);
                            } else {//Servicio Equipo
                                disp.setServicio(servicioSeleccionado);
                                disp.setTipoAmbiente(1);
                            }
                           Integer tipoRes = (res.getReaTipoec() == null) ? 7 : res.getReaTipoec();
                            switch (tipoRes) {
                                case 0: //evento reservado
                                    if (res.getEveCodigo().getPreNombre().length() > 30) {
                                        name = res.getEveCodigo().getPreNombre().substring(0, 30);
                                    } else {
                                        name = res.getEveCodigo().getPreNombre();
                                    }
                                    disp.setColorViernes(azul);
                                    break;
                                case 1: //contrato
                                    if (res.getContrato().getConNombreEvento().length() > 30) {
                                        name = res.getContrato().getConNombreEvento().substring(0, 30);
                                    } else {
                                        name = res.getContrato().getConNombreEvento();
                                    }
                                    disp.setColorViernes(azul);
                                    break;
                                case 2: //cumpleaños
                                    if (res.getReaNombreEvento().length() > 30) {
                                        name = res.getReaNombreEvento().substring(0, 30);
                                    } else {
                                        name = res.getReaNombreEvento();
                                    }
                                    disp.setColorViernes(verde);
                                    break;
                                case 3: //no disponible
                                    name = "NO DISPONIBLE";
                                    disp.setColorViernes(rojo);
                                    break;
                                case 4: //feriados
                                    name = "FERIADO";
                                    disp.setColorViernes(rojo);
                                    break;
                                case 5: //reuniones
                                    name = res.getRealugarReunion();
                                    disp.setColorViernes(verde);
                                    break;
                                case 6: //evento aprobado
                                    if (res.getEveCodigo().getPreNombre().length() > 30) {
                                        name = res.getEveCodigo().getPreNombre().substring(0, 30);
                                    } else {
                                        name = res.getEveCodigo().getPreNombre();
                                    }
                                    disp.setColorViernes(azul);
                                    break;
                                case 7: //
                                    name = "OTROS";
                                    disp.setColorViernes(verde);
                                    break;
                            }
                            disp.setCodigoViernes(res);
                            disp.setViernes(name);
                        }
                    }
                    if (var) {
                        if (tipoAmbiente.equals("1")) {//Ambiente
                            disp.setAmbiente(ambienteSeleccionado);
                            disp.setTipoAmbiente(0);
                        } else {//Servicio Equipo
                            disp.setServicio(servicioSeleccionado);
                            disp.setTipoAmbiente(1);
                        }
                        if (new Date().compareTo(disp.getFechaViernes()) > 0) {
                            disp.setEstadoViernes(false);
                        }
                        if (new Date(new Date().getYear(), new Date().getMonth(), new Date().getDate()).compareTo(disp.getFechaViernes()) == 0) {
                            disp.setEstadoViernes(true);
                        }
                        disp.setViernes("Disponible");
                    }
                    var = true;
                } catch (Exception ex) {}
                
                //Sabado
                //lizardoo estuvo aqui
                try {
                    for (ReservaAmbiente res : listaReservaSabado) {
                        if (res.getReahoraInicio() == i) {
                            var = false;
                            disp.setEstadoSabado(false);//Desabilitado
                            if (tipoAmbiente.equals("1")) {//Ambiente
                                disp.setAmbiente(ambienteSeleccionado);
                                disp.setTipoAmbiente(0);
                            } else {//Servicio Equipo
                                disp.setServicio(servicioSeleccionado);
                                disp.setTipoAmbiente(1);
                            }
                            Integer tipoRes = (res.getReaTipoec() == null) ? 7 : res.getReaTipoec();
                            switch (tipoRes) {
                                case 0: //evento reservado
                                    if (res.getEveCodigo().getPreNombre().length() > 30) {
                                        name = res.getEveCodigo().getPreNombre().substring(0, 30);
                                    } else {
                                        name = res.getEveCodigo().getPreNombre();
                                    }
                                    disp.setColorLunes(azul);
                                    break;
                                case 1: //contrato
                                    if (res.getContrato().getConNombreEvento().length() > 30) {
                                        name = res.getContrato().getConNombreEvento().substring(0, 30);
                                    } else {
                                        name = res.getContrato().getConNombreEvento();
                                    }
                                    disp.setColorSabado(azul);
                                    break;
                                case 2: //cumpleaños
                                    if (res.getReaNombreEvento().length() > 30) {
                                        name = res.getReaNombreEvento().substring(0, 30);
                                    } else {
                                        name = res.getReaNombreEvento();
                                    }
                                    disp.setColorSabado(verde);
                                    break;
                                case 3: //no disponible
                                    name = "NO DISPONIBLE";
                                    disp.setColorSabado(rojo);
                                    break;
                                case 4: //feriados
                                    name = "FERIADO";
                                    disp.setColorSabado(rojo);
                                    break;
                                case 5: //reuniones
                                    name = res.getRealugarReunion();
                                    disp.setColorSabado(verde);
                                    break;
                                case 6: //evento aprobado
                                    if (res.getEveCodigo().getPreNombre().length() > 30) {
                                        name = res.getEveCodigo().getPreNombre().substring(0, 30);
                                    } else {
                                        name = res.getEveCodigo().getPreNombre();
                                    }
                                    disp.setColorSabado(azul);
                                    break;
                                case 7: //
                                    name = "OTROS";
                                    disp.setColorSabado(verde);
                                    break;
                            }
                            disp.setCodigoSabado(res);
                            disp.setSabado(name);
                        }
                    }
                    if (var) {
                        if (tipoAmbiente.equals("1")) {//Ambiente
                            disp.setAmbiente(ambienteSeleccionado);
                            disp.setTipoAmbiente(0);
                        } else {//Servicio Equipo
                            disp.setServicio(servicioSeleccionado);
                            disp.setTipoAmbiente(1);
                        }
                        if (new Date().compareTo(disp.getFechaSabado()) > 0) {
                            disp.setEstadoSabado(false);
                        }
                        if (new Date(new Date().getYear(), new Date().getMonth(), new Date().getDate()).compareTo(disp.getFechaSabado()) == 0) {
                            disp.setEstadoSabado(true);
                        }
                        disp.setSabado("Disponible");
                    }
                    var = true;
                } catch (Exception ex) {}
                
                //Domingo
                //lizardo estuvo aqui
                try {
                    for (ReservaAmbiente res : listaReservaDomingo) {
                        if (res.getReahoraInicio() == i) {
                            var = false;
                            disp.setEstadoDomingo(false);//Desabilitado
                            if (tipoAmbiente.equals("1")) {//Ambiente
                                disp.setAmbiente(ambienteSeleccionado);
                                disp.setTipoAmbiente(0);
                            } else {//Servicio Equipo
                                disp.setServicio(servicioSeleccionado);
                                disp.setTipoAmbiente(1);
                            }
                            Integer tipoRes = (res.getReaTipoec() == null) ? 7 : res.getReaTipoec();
                            switch (tipoRes) {
                                case 0: //evento reservado
                                    if (res.getEveCodigo().getPreNombre().length() > 30) {
                                        name = res.getEveCodigo().getPreNombre().substring(0, 30);
                                    } else {
                                        name = res.getEveCodigo().getPreNombre();
                                    }
                                    disp.setColorDomingo(azul);
                                    break;
                                case 1: //contrato
                                    if (res.getContrato().getConNombreEvento().length() > 30) {
                                        name = res.getContrato().getConNombreEvento().substring(0, 30);
                                    } else {
                                        name = res.getContrato().getConNombreEvento();
                                    }
                                    disp.setColorDomingo(azul);
                                    break;
                                case 2: //cumpleaños
                                    if (res.getReaNombreEvento().length() > 30) {
                                        name = res.getReaNombreEvento().substring(0, 30);
                                    } else {
                                        name = res.getReaNombreEvento();
                                    }
                                    disp.setColorDomingo(verde);
                                    break;
                                case 3: //no disponible
                                    name = "NO DISPONIBLE";
                                    disp.setColorDomingo(rojo);
                                    break;
                                case 4: //feriados
                                    name = "FERIADO";
                                    disp.setColorDomingo(rojo);
                                    break;
                                case 5: //reuniones
                                    name = res.getRealugarReunion();
                                    disp.setColorDomingo(verde);
                                    break;
                                case 6: //evento aprobado
                                    if (res.getEveCodigo().getPreNombre().length() > 30) {
                                        name = res.getEveCodigo().getPreNombre().substring(0, 30);
                                    } else {
                                        name = res.getEveCodigo().getPreNombre();
                                    }
                                    disp.setColorDomingo(azul);
                                    break;
                                case 7: //
                                    name = "OTROS";
                                    disp.setColorDomingo(verde);
                                    break;
                            }
                            disp.setCodigoDomingo(res);
                            disp.setDomingo(name);
                        }
                    }
                    if (var) {
                        if (tipoAmbiente.equals("1")) {//Ambiente
                            disp.setAmbiente(ambienteSeleccionado);
                            disp.setTipoAmbiente(0);
                        } else {//Servicio Equipo
                            disp.setServicio(servicioSeleccionado);
                            disp.setTipoAmbiente(1);
                        }
                        if (new Date().compareTo(disp.getFechaDomingo()) >= 0) {
                            disp.setEstadoDomingo(false);
                        }
                        if (new Date(new Date().getYear(), new Date().getMonth(), new Date().getDate()).compareTo(disp.getFechaDomingo()) == 0) {
                            disp.setEstadoDomingo(true);
                        }
                        disp.setDomingo("Disponible");
                    }
                    var = true;
                } catch (Exception ex) {}
                
                listaAmbientesDisponibles.add(disp);
                listaAmbientesDisponibles1.add(disp);
            }
            codigoSolicitante = (codigoSolicitante != null) ? codigoSolicitante : 0L;
            switch (banTipo) {
                case 1: persona = delegate.encontrarPersona(codigoSolicitante);             break;
                case 2: personaSeleccionada = delegate.encontrarPersona(codigoSolicitante); break;
                case 3: empresa = delegate.encontrarEmpresa(codigoSolicitante);             break;
                case 4: empresaSeleccionada = delegate.encontrarEmpresa(codigoSolicitante);
            }
        } catch (Exception e) {
            //lizardo estuvo aqui
            mostrarMensaje("ERROR: ", "En cargar reservas...", FacesMessage.SEVERITY_ERROR);
            System.out.println("FATAL: " + e.getMessage());
        }
        return null;
    }

    public String buscarReservas() {
        try {
            cargarAmbientesReservado();
        } catch (Exception e) {
        }
        return null;
    }

    public void cargarAmbientesReservado() {
        listaAmbientesReservados = new ArrayList<DisponibilidadAmbientesSemanal>();
        Calendar c = Calendar.getInstance();
        c.setTime(fechaAmbiente);
        int dia = c.get(Calendar.DAY_OF_WEEK);
        List<ReservaAmbiente> listaReservaLunes = new ArrayList<ReservaAmbiente>();
        List<ReservaAmbiente> listaReservaMartes = new ArrayList<ReservaAmbiente>();
        List<ReservaAmbiente> listaReservaMiercoles = new ArrayList<ReservaAmbiente>();
        List<ReservaAmbiente> listaReservaJueves = new ArrayList<ReservaAmbiente>();
        List<ReservaAmbiente> listaReservaViernes = new ArrayList<ReservaAmbiente>();
        List<ReservaAmbiente> listaReservaSabado = new ArrayList<ReservaAmbiente>();
        List<ReservaAmbiente> listaReservaDomingo = new ArrayList<ReservaAmbiente>();
        Calendar cLunes = Calendar.getInstance();
        Calendar cMartes = Calendar.getInstance();
        Calendar cMiercoles = Calendar.getInstance();
        Calendar cJueves = Calendar.getInstance();
        Calendar cViernes = Calendar.getInstance();
        Calendar cSabado = Calendar.getInstance();
        Calendar cDomingo = Calendar.getInstance();
        cLunes.setTime(fechaAmbiente);
        cMartes.setTime(fechaAmbiente);
        cMiercoles.setTime(fechaAmbiente);
        cJueves.setTime(fechaAmbiente);
        cViernes.setTime(fechaAmbiente);
        cSabado.setTime(fechaAmbiente);
        cDomingo.setTime(fechaAmbiente);
        switch (dia) {
            case 1:
                //Domingo
                cLunes.add(Calendar.DATE, -6);
                cMartes.add(Calendar.DATE, -5);
                cMiercoles.add(Calendar.DATE, -4);
                cJueves.add(Calendar.DATE, -3);
                cViernes.add(Calendar.DATE, -2);
                cSabado.add(Calendar.DATE, -1);
                break;
            case 2:
                //Lunes
                cMartes.add(Calendar.DATE, 1);
                cMiercoles.add(Calendar.DATE, 2);
                cJueves.add(Calendar.DATE, 3);
                cViernes.add(Calendar.DATE, 4);
                cSabado.add(Calendar.DATE, 5);
                cDomingo.add(Calendar.DATE, 6);
                break;
            case 3:
                //Martes
                cLunes.add(Calendar.DATE, -1);
                cMiercoles.add(Calendar.DATE, 1);
                cJueves.add(Calendar.DATE, 2);
                cViernes.add(Calendar.DATE, 3);
                cSabado.add(Calendar.DATE, 4);
                cDomingo.add(Calendar.DATE, 5);
                break;
            case 4:
                //Miercoles
                cLunes.add(Calendar.DATE, -2);
                cMartes.add(Calendar.DATE, -1);
                cJueves.add(Calendar.DATE, 1);
                cViernes.add(Calendar.DATE, 2);
                cSabado.add(Calendar.DATE, 3);
                cDomingo.add(Calendar.DATE, 4);
                break;
            case 5:
                //Jueves
                cLunes.add(Calendar.DATE, -3);
                cMartes.add(Calendar.DATE, -2);
                cMiercoles.add(Calendar.DATE, -1);
                cViernes.add(Calendar.DATE, 1);
                cSabado.add(Calendar.DATE, 2);
                cDomingo.add(Calendar.DATE, 3);
                break;
            case 6:
                //Viernes
                cLunes.add(Calendar.DATE, -4);
                cMartes.add(Calendar.DATE, -3);
                cMiercoles.add(Calendar.DATE, -2);
                cJueves.add(Calendar.DATE, -1);
                cSabado.add(Calendar.DATE, 1);
                cDomingo.add(Calendar.DATE, 2);
                break;
            case 7:
                //Sabado
                cLunes.add(Calendar.DATE, -5);
                cMartes.add(Calendar.DATE, -4);
                cMiercoles.add(Calendar.DATE, -3);
                cJueves.add(Calendar.DATE, -2);
                cViernes.add(Calendar.DATE, -1);
                cDomingo.add(Calendar.DATE, 1);
                break;
        }
        try {
            if (tipoAmbiente.equals("1")) {//Ambiente
                listaReservaLunes = delegate.listarReserva_Dia(cLunes.getTime(), ambienteSeleccionado);
                listaReservaMartes = delegate.listarReserva_Dia(cMartes.getTime(), ambienteSeleccionado);
                listaReservaMiercoles = delegate.listarReserva_Dia(cMiercoles.getTime(), ambienteSeleccionado);
                listaReservaJueves = delegate.listarReserva_Dia(cJueves.getTime(), ambienteSeleccionado);
                listaReservaViernes = delegate.listarReserva_Dia(cViernes.getTime(), ambienteSeleccionado);
                listaReservaSabado = delegate.listarReserva_Dia(cSabado.getTime(), ambienteSeleccionado);
                listaReservaDomingo = delegate.listarReserva_Dia(cDomingo.getTime(), ambienteSeleccionado);
            } else {//Servicio Equipo
                listaReservaLunes = delegate.listarReserva_Dia(cLunes.getTime(), servicioSeleccionado);
                listaReservaMartes = delegate.listarReserva_Dia(cMartes.getTime(), servicioSeleccionado);
                listaReservaMiercoles = delegate.listarReserva_Dia(cMiercoles.getTime(), servicioSeleccionado);
                listaReservaJueves = delegate.listarReserva_Dia(cJueves.getTime(), servicioSeleccionado);
                listaReservaViernes = delegate.listarReserva_Dia(cViernes.getTime(), servicioSeleccionado);
                listaReservaSabado = delegate.listarReserva_Dia(cSabado.getTime(), servicioSeleccionado);
                listaReservaDomingo = delegate.listarReserva_Dia(cDomingo.getTime(), servicioSeleccionado);
            }
            String rojo = "#FEC983";
            for (int i = 7; i < 24; i++) {
                //i=Hora Inicio,j=Hora Fin
                int j = i + 1;
                boolean var = true;
                DisponibilidadAmbientesSemanal disp = new DisponibilidadAmbientesSemanal();
                disp.setFechaDomingo(cDomingo.getTime());
                disp.setFechaSabado(cSabado.getTime());
                disp.setFechaViernes(cViernes.getTime());
                disp.setFechaJueves(cJueves.getTime());
                disp.setFechaMiercoles(cMiercoles.getTime());
                disp.setFechaMartes(cMartes.getTime());
                disp.setFechaLunes(cLunes.getTime());
                if (i == 7) {
                    SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy");
                    DisponibilidadAmbientesSemanal disp1 = new DisponibilidadAmbientesSemanal();
                    disp1.setLunes(formato.format(cLunes.getTime()));
                    disp1.setMartes(formato.format(cMartes.getTime()));
                    disp1.setMiercoles(formato.format(cMiercoles.getTime()));
                    disp1.setJueves(formato.format(cJueves.getTime()));
                    disp1.setViernes(formato.format(cViernes.getTime()));
                    disp1.setSabado(formato.format(cSabado.getTime()));
                    disp1.setDomingo(formato.format(cDomingo.getTime()));
                    disp1.setColorLunes("#F4F4F4");
                    disp1.setColorMartes("#F4F4F4");
                    disp1.setColorMiercoles("#F4F4F4");
                    disp1.setColorJueves("#F4F4F4");
                    disp1.setColorViernes("#F4F4F4");
                    disp1.setColorSabado("#F4F4F4");
                    disp1.setColorDomingo("#F4F4F4");
                    disp1.setEstadoLunes(false);
                    disp1.setEstadoMartes(false);
                    disp1.setEstadoMiercoles(false);
                    disp1.setEstadoJueves(false);
                    disp1.setEstadoViernes(false);
                    disp1.setEstadoSabado(false);
                    disp1.setEstadoDomingo(false);
                    listaAmbientesReservados.add(disp1);
                }
                //LLenar Lunes
                for (ReservaAmbiente res : listaReservaLunes) {
                    if (res.getReahoraInicio() == i) {
                        var = false;
                        disp.setEstadoLunes(true);//Habilitado
                        String name;
                        if (tipoAmbiente.equals("1")) {//Ambiente
                            disp.setAmbiente(ambienteSeleccionado);
                            disp.setTipoAmbiente(0);
                        } else {//Servicio Equipo
                            disp.setServicio(servicioSeleccionado);
                            disp.setTipoAmbiente(1);
                        }
                        if (res.getReaTipoec() == 0) {//Evento
                            if (res.getEveCodigo().getPreNombre().length() > 30) {
                                name = res.getEveCodigo().getPreNombre().substring(0, 30);
                            } else {
                                name = res.getEveCodigo().getPreNombre();
                            }
                            disp.setColorLunes(rojo);
                        } else {//Contrato
                            if (res.getReaTipoec() == 1) {
                                if (res.getContrato().getConNombreEvento().length() > 30) {
                                    name = res.getContrato().getConNombreEvento().substring(0, 30);
                                } else {
                                    name = res.getContrato().getConNombreEvento();
                                }
                                disp.setColorLunes(disp.getColorAzul());
                            } else {
                                if (res.getReaTipoec() == 2) {
                                    if (res.getReaNombreEvento().length() > 30) {
                                        name = res.getReaNombreEvento().substring(0, 30);
                                    } else {
                                        name = res.getReaNombreEvento();
                                    }
                                    disp.setColorLunes(disp.getColorMorado());
                                } else {
                                    name = "No Disponible";
                                    disp.setColorLunes(disp.getColorFeriado());
                                }
                            }
                        }
                        if (new Date().compareTo(disp.getFechaDomingo()) >= 0) {
                            disp.setEstadoLunes(false);
                        }
                        if (new Date(new Date().getYear(), new Date().getMonth(), new Date().getDate()).compareTo(disp.getFechaDomingo()) == 0) {
                            disp.setEstadoLunes(true);
                        }
                        disp.setLunes(name);
                        disp.setCodigoLunes(res);
                    }
                }
                if (var) {
                    if (tipoAmbiente.equals("1")) {//Ambiente
                        disp.setAmbiente(ambienteSeleccionado);
                        disp.setTipoAmbiente(0);
                    } else {//Servicio Equipo
                        disp.setServicio(servicioSeleccionado);
                        disp.setTipoAmbiente(1);
                    }
                    disp.setEstadoLunes(false);
                    disp.setLunes("Disponible");
                }
                disp.setHorarios(i + ":00-" + j + ":00");
                disp.setHoraInicio(i + 0.0);
                disp.setHoraFin(j + 0.0);
                var = true;
                //Martes
                for (ReservaAmbiente res : listaReservaMartes) {
                    if (res.getReahoraInicio() == i) {
                        var = false;
                        disp.setEstadoMartes(true);//Desabilitado
                        if (tipoAmbiente.equals("1")) {//Ambiente
                            disp.setAmbiente(ambienteSeleccionado);
                            disp.setTipoAmbiente(0);
                        } else {//Servicio Equipo
                            disp.setServicio(servicioSeleccionado);
                            disp.setTipoAmbiente(1);
                        }
                        String name;
                        if (res.getReaTipoec() == 0) {//Evento
                            if (res.getEveCodigo().getPreNombre().length() > 30) {
                                name = res.getEveCodigo().getPreNombre().substring(0, 30);
                            } else {
                                name = res.getEveCodigo().getPreNombre();
                            }
                            disp.setColorMartes(rojo);
                        } else {//Contrato
                            if (res.getReaTipoec() == 1) {
                                if (res.getContrato().getConNombreEvento().length() > 30) {
                                    name = res.getContrato().getConNombreEvento().substring(0, 30);
                                } else {
                                    name = res.getContrato().getConNombreEvento();
                                }
                                disp.setColorMartes(disp.getColorAzul());
                            } else {
                                if (res.getReaTipoec() == 2) {
                                    if (res.getReaNombreEvento().length() > 30) {
                                        name = res.getReaNombreEvento().substring(0, 30);
                                    } else {
                                        name = res.getReaNombreEvento();
                                    }
                                    disp.setColorMartes(disp.getColorMorado());
                                } else {
                                    name = "No Disponible";
                                    disp.setColorMartes(disp.getColorFeriado());
                                }
                            }
                        }
                        if (new Date().compareTo(disp.getFechaDomingo()) >= 0) {
                            disp.setEstadoMartes(false);
                        }
                        if (new Date(new Date().getYear(), new Date().getMonth(), new Date().getDate()).compareTo(disp.getFechaDomingo()) == 0) {
                            disp.setEstadoMartes(true);
                        }
                        disp.setMartes(name);
                        disp.setCodigoMartes(res);
                    }
                }
                if (var) {
                    if (tipoAmbiente.equals("1")) {//Ambiente
                        disp.setAmbiente(ambienteSeleccionado);
                        disp.setTipoAmbiente(0);
                    } else {//Servicio Equipo
                        disp.setServicio(servicioSeleccionado);
                        disp.setTipoAmbiente(1);
                    }
                    disp.setEstadoMartes(false);
                    disp.setMartes("Disponible");
                }
                var = true;
                //Miercoles
                for (ReservaAmbiente res : listaReservaMiercoles) {
                    if (res.getReahoraInicio() == i) {
                        var = false;
                        disp.setEstadoMiercoles(true);//Desabilitado
                        if (tipoAmbiente.equals("1")) {//Ambiente
                            disp.setAmbiente(ambienteSeleccionado);
                            disp.setTipoAmbiente(0);
                        } else {//Servicio Equipo
                            disp.setServicio(servicioSeleccionado);
                            disp.setTipoAmbiente(1);
                        }
                        String name;
                        if (res.getReaTipoec() == 0) {//Evento
                            if (res.getEveCodigo().getPreNombre().length() > 30) {
                                name = res.getEveCodigo().getPreNombre().substring(0, 30);
                            } else {
                                name = res.getEveCodigo().getPreNombre();
                            }
                            disp.setColorMiercoles(rojo);
                        } else {//Contrato
                            if (res.getReaTipoec() == 1) {
                                if (res.getContrato().getConNombreEvento().length() > 30) {
                                    name = res.getContrato().getConNombreEvento().substring(0, 30);
                                } else {
                                    name = res.getContrato().getConNombreEvento();
                                }
                                disp.setColorMiercoles(disp.getColorAzul());
                            } else {
                                if (res.getReaTipoec() == 2) {
                                    if (res.getReaNombreEvento().length() > 30) {
                                        name = res.getReaNombreEvento().substring(0, 30);
                                    } else {
                                        name = res.getReaNombreEvento();
                                    }
                                    disp.setColorMiercoles(disp.getColorMorado());
                                } else {
                                    name = "No Disponible";
                                    disp.setColorMiercoles(disp.getColorFeriado());
                                }
                            }
                        }
                        if (new Date().compareTo(disp.getFechaMiercoles()) >= 0) {
                            disp.setEstadoMiercoles(false);
                        }
                        if (new Date(new Date().getYear(), new Date().getMonth(), new Date().getDate()).compareTo(disp.getFechaMiercoles()) == 0) {
                            disp.setEstadoMiercoles(true);
                        }
                        disp.setMiercoles(name);
                        disp.setCodigoMiercoles(res);
                    }
                }
                if (var) {
                    if (tipoAmbiente.equals("1")) {//Ambiente
                        disp.setAmbiente(ambienteSeleccionado);
                        disp.setTipoAmbiente(0);
                    } else {//Servicio Equipo
                        disp.setServicio(servicioSeleccionado);
                        disp.setTipoAmbiente(1);
                    }
                    disp.setEstadoMiercoles(false);
                    disp.setMiercoles("Disponible");
                }
                var = true;
                //Jueves
                for (ReservaAmbiente res : listaReservaJueves) {
                    if (res.getReahoraInicio() == i) {
                        var = false;
                        disp.setEstadoJueves(true);//Desabilitado
                        if (tipoAmbiente.equals("1")) {//Ambiente
                            disp.setAmbiente(ambienteSeleccionado);
                            disp.setTipoAmbiente(0);
                        } else {//Servicio Equipo
                            disp.setServicio(servicioSeleccionado);
                            disp.setTipoAmbiente(1);
                        }
                        String name;
                        if (res.getReaTipoec() == 0) {//Evento
                            if (res.getEveCodigo().getPreNombre().length() > 30) {
                                name = res.getEveCodigo().getPreNombre().substring(0, 30);
                            } else {
                                name = res.getEveCodigo().getPreNombre();
                            }
                            disp.setColorJueves(rojo);
                        } else {//Contrato
                            if (res.getReaTipoec() == 1) {
                                if (res.getContrato().getConNombreEvento().length() > 30) {
                                    name = res.getContrato().getConNombreEvento().substring(0, 30);
                                } else {
                                    name = res.getContrato().getConNombreEvento();
                                }
                                disp.setColorJueves(disp.getColorAzul());
                            } else {
                                if (res.getReaTipoec() == 2) {
                                    if (res.getReaNombreEvento().length() > 30) {
                                        name = res.getReaNombreEvento().substring(0, 30);
                                    } else {
                                        name = res.getReaNombreEvento();
                                    }
                                    disp.setColorJueves(disp.getColorMorado());
                                } else {
                                    name = "No Disponible";
                                    disp.setColorJueves(disp.getColorFeriado());
                                }
                            }
                        }
                        if (new Date().compareTo(disp.getFechaJueves()) >= 0) {
                            disp.setEstadoJueves(false);
                        }
                        if (new Date(new Date().getYear(), new Date().getMonth(), new Date().getDate()).compareTo(disp.getFechaJueves()) == 0) {
                            disp.setEstadoJueves(true);
                        }
                        disp.setJueves(name);
                        disp.setCodigoJueves(res);
                    }
                }
                if (var) {
                    if (tipoAmbiente.equals("1")) {//Ambiente
                        disp.setAmbiente(ambienteSeleccionado);
                        disp.setTipoAmbiente(0);
                    } else {//Servicio Equipo
                        disp.setServicio(servicioSeleccionado);
                        disp.setTipoAmbiente(1);
                    }
                    disp.setEstadoJueves(false);
                    disp.setJueves("Disponible");
                }
                var = true;
                //Viernes
                for (ReservaAmbiente res : listaReservaViernes) {
                    if (res.getReahoraInicio() == i) {
                        var = false;
                        disp.setEstadoViernes(true);//Desabilitado
                        if (tipoAmbiente.equals("1")) {//Ambiente
                            disp.setAmbiente(ambienteSeleccionado);
                            disp.setTipoAmbiente(0);
                        } else {//Servicio Equipo
                            disp.setServicio(servicioSeleccionado);
                            disp.setTipoAmbiente(1);
                        }
                        String name;
                        if (res.getReaTipoec() == 0) {//Evento
                            if (res.getEveCodigo().getPreNombre().length() > 30) {
                                name = res.getEveCodigo().getPreNombre().substring(0, 30);
                            } else {
                                name = res.getEveCodigo().getPreNombre();
                            }
                            disp.setColorViernes(rojo);
                        } else {//Contrato
                            if (res.getReaTipoec() == 1) {
                                if (res.getContrato().getConNombreEvento().length() > 30) {
                                    name = res.getContrato().getConNombreEvento().substring(0, 30);
                                } else {
                                    name = res.getContrato().getConNombreEvento();
                                }
                                disp.setColorViernes(disp.getColorAzul());
                            } else {
                                if (res.getReaTipoec() == 2) {
                                    if (res.getReaNombreEvento().length() > 30) {
                                        name = res.getReaNombreEvento().substring(0, 30);
                                    } else {
                                        name = res.getReaNombreEvento();
                                    }
                                    disp.setColorViernes(disp.getColorMorado());
                                } else {
                                    name = "No Disponible";
                                    disp.setColorViernes(disp.getColorFeriado());
                                }
                            }
                        }
                        if (new Date().compareTo(disp.getFechaViernes()) > 0) {
                            disp.setEstadoViernes(false);
                        }
                        if (new Date(new Date().getYear(), new Date().getMonth(), new Date().getDate()).compareTo(disp.getFechaViernes()) == 0) {
                            disp.setEstadoViernes(true);
                        }
                        disp.setViernes(name);
                        disp.setCodigoViernes(res);
                    }
                }
                if (var) {
                    if (tipoAmbiente.equals("1")) {//Ambiente
                        disp.setAmbiente(ambienteSeleccionado);
                        disp.setTipoAmbiente(0);
                    } else {//Servicio Equipo
                        disp.setServicio(servicioSeleccionado);
                        disp.setTipoAmbiente(1);
                    }
                    disp.setEstadoViernes(false);
                    disp.setViernes("Disponible");
                }
                var = true;
                //Sabado
                for (ReservaAmbiente res : listaReservaSabado) {
                    if (res.getReahoraInicio() == i) {
                        var = false;
                        disp.setEstadoSabado(true);//Desabilitado
                        if (tipoAmbiente.equals("1")) {//Ambiente
                            disp.setAmbiente(ambienteSeleccionado);
                            disp.setTipoAmbiente(0);
                        } else {//Servicio Equipo
                            disp.setServicio(servicioSeleccionado);
                            disp.setTipoAmbiente(1);
                        }
                        String name;
                        if (res.getReaTipoec() == 0) {//Evento
                            if (res.getEveCodigo().getPreNombre().length() > 30) {
                                name = res.getEveCodigo().getPreNombre().substring(0, 30);
                            } else {
                                name = res.getEveCodigo().getPreNombre();
                            }
                            disp.setColorSabado(rojo);
                        } else {//Contrato
                            if (res.getReaTipoec() == 1) {
                                if (res.getContrato().getConNombreEvento().length() > 30) {
                                    name = res.getContrato().getConNombreEvento().substring(0, 30);
                                } else {
                                    name = res.getContrato().getConNombreEvento();
                                }
                                disp.setColorSabado(disp.getColorAzul());
                            } else {
                                if (res.getReaTipoec() == 2) {
                                    if (res.getReaNombreEvento().length() > 30) {
                                        name = res.getReaNombreEvento().substring(0, 30);
                                    } else {
                                        name = res.getReaNombreEvento();
                                    }
                                    disp.setColorSabado(disp.getColorMorado());
                                } else {
                                    name = "No Disponible";
                                    disp.setColorSabado(disp.getColorFeriado());
                                }
                            }
                        }
                        if (new Date().compareTo(disp.getFechaSabado()) > 0) {
                            disp.setEstadoSabado(false);
                        }
                        if (new Date(new Date().getYear(), new Date().getMonth(), new Date().getDate()).compareTo(disp.getFechaSabado()) == 0) {
                            disp.setEstadoSabado(true);
                        }
                        disp.setSabado(name);
                        disp.setCodigoSabado(res);
                    }
                }
                if (var) {
                    if (tipoAmbiente.equals("1")) {//Ambiente
                        disp.setAmbiente(ambienteSeleccionado);
                        disp.setTipoAmbiente(0);
                    } else {//Servicio Equipo
                        disp.setServicio(servicioSeleccionado);
                        disp.setTipoAmbiente(1);
                    }
                    disp.setEstadoSabado(false);
                    disp.setSabado("Disponible");
                }
                var = true;
                //Domingo
                for (ReservaAmbiente res : listaReservaDomingo) {
                    if (res.getReahoraInicio() == i) {
                        var = false;
                        disp.setEstadoDomingo(true);//Desabilitado
                        if (tipoAmbiente.equals("1")) {//Ambiente
                            disp.setAmbiente(ambienteSeleccionado);
                            disp.setTipoAmbiente(0);
                        } else {//Servicio Equipo
                            disp.setServicio(servicioSeleccionado);
                            disp.setTipoAmbiente(1);
                        }
                        String name;
                        if (res.getReaTipoec() == 0) {//Evento
                            if (res.getEveCodigo().getPreNombre().length() > 30) {
                                name = res.getEveCodigo().getPreNombre().substring(0, 30);
                            } else {
                                name = res.getEveCodigo().getPreNombre();
                            }
                            disp.setColorDomingo(rojo);
                        } else {//Contrato
                            if (res.getReaTipoec() == 1) {
                                if (res.getContrato().getConNombreEvento().length() > 30) {
                                    name = res.getContrato().getConNombreEvento().substring(0, 30);
                                } else {
                                    name = res.getContrato().getConNombreEvento();
                                }
                                disp.setColorDomingo(disp.getColorAzul());
                            } else {
                                if (res.getReaTipoec() == 2) {
                                    if (res.getReaNombreEvento().length() > 30) {
                                        name = res.getReaNombreEvento().substring(0, 30);
                                    } else {
                                        name = res.getReaNombreEvento();
                                    }
                                    disp.setColorDomingo(disp.getColorMorado());
                                } else {
                                    name = "No Disponible";
                                    disp.setColorDomingo(disp.getColorFeriado());
                                }
                            }
                        }
                        if (new Date().compareTo(disp.getFechaDomingo()) >= 0) {
                            disp.setEstadoDomingo(false);
                        }
                        if (new Date(new Date().getYear(), new Date().getMonth(), new Date().getDate()).compareTo(disp.getFechaDomingo()) == 0) {
                            disp.setEstadoDomingo(true);
                        }
                        disp.setDomingo(name);
                        disp.setCodigoDomingo(res);
                    }
                }
                if (var) {
                    if (tipoAmbiente.equals("1")) {//Ambiente
                        disp.setAmbiente(ambienteSeleccionado);
                        disp.setTipoAmbiente(0);
                    } else {//Servicio Equipo
                        disp.setServicio(servicioSeleccionado);
                        disp.setTipoAmbiente(1);
                    }
                    disp.setEstadoDomingo(false);
                    disp.setDomingo("Disponible");
                }
                var = true;
                listaAmbientesReservados.add(disp);
            }
        } catch (Exception e) {
        }
    }

    public boolean validarReservas(List<DisponibilidadAmbientesSemanal> lista) {
        for (DisponibilidadAmbientesSemanal disp : lista) {
            if (disp.getReservarLunes() || disp.getReservarMartes() || disp.getReservarMiercoles() || disp.getReservarJueves() || disp.getReservarViernes() || disp.getReservarSabado() || disp.getReservarDomingo()) {
                return true;
            }
        }
        return false;
    }

    public String anularReservasAmbientes() {
        try {
            if (listaAmbientesReservados.size() > 0) {
                if (validarReservas(listaAmbientesReservados)) {
                    //Anular reserva
                    anularReserva();

                    mostrarMensaje("Exito: ", "La reservas se anularon satisfactoriamente", FacesMessage.SEVERITY_INFO);
                    listaAmbientesReservados.clear();
                } else {
                    mostrarMensaje("Error: ", "Busque y Seleccione una reserva", FacesMessage.SEVERITY_ERROR);
                }
            } else {
                mostrarMensaje("Error: ", "Busque y Seleccione una reserva", FacesMessage.SEVERITY_ERROR);
            }
            inicializar();
            return "";
        } catch (Exception ex) {
            mostrarMensaje("Error: ", "Busque y Seleccione una reserva", FacesMessage.SEVERITY_ERROR);
            listaAmbientesReservados.clear();
            inicializar();
            return "";
        }
    }

    public void anularReserva() {
        try {
            for (DisponibilidadAmbientesSemanal disp : listaAmbientesReservados) {
                if (disp.getReservarLunes()) {
                    delegate.eliminar(disp.getCodigoLunes());
                }
                if (disp.getReservarMartes()) {
                    delegate.eliminar(disp.getCodigoMartes());
                }
                if (disp.getReservarMiercoles()) {
                    delegate.eliminar(disp.getCodigoMiercoles());
                }
                if (disp.getReservarJueves()) {
                    delegate.eliminar(disp.getCodigoJueves());
                }
                if (disp.getReservarViernes()) {
                    delegate.eliminar(disp.getCodigoViernes());
                }
                if (disp.getReservarSabado()) {
                    delegate.eliminar(disp.getCodigoSabado());
                }
                if (disp.getReservarDomingo()) {
                    delegate.eliminar(disp.getCodigoDomingo());
                }
            }
        } catch (Exception e) {
            System.out.println("El error es " + e.toString());
        }
    }

    public String agregarDireccion() {
        try {
            contratanteSeleccionado = (contratanteSeleccionado != null) ? contratanteSeleccionado  : false;
            contratanteRegistrado = (contratanteRegistrado != null) ? contratanteRegistrado : false;
            if (!contratanteRegistrado) {
                if (tipoPersona == 1) {
                    //validamos datos de la persona
                    if (validarStrings(personaNatural.getPerNroDNI())) {
                        if (validarStrings(personaNatural.getPerapellidoPaterno())) {
                            if (validarStrings(personaNatural.getPerapellidoMaterno())) {
                                if (validarStrings(personaNatural.getPerNombres())) {
                                    personaNatural.setPerActivo(true);
                                    String correoPersonal1 = (personaNatural.getSolcorreopersonal1().compareTo("-- no tiene correo --")==0) ? null : personaNatural.getSolcorreopersonal1();
                                    String correoPersonal2 = (personaNatural.getSolcorreopersonal2().compareTo("-- no tiene correo --")==0) ? null : personaNatural.getSolcorreopersonal2();
                                    String correoEmpresa = (personaNatural.getSolcorreoempresa().compareTo("-- no tiene correo --")==0) ? null : personaNatural.getSolcorreoempresa();
                                    personaNatural.setSolcorreopersonal1(correoPersonal1);
                                    personaNatural.setSolcorreopersonal2(correoPersonal2);
                                    personaNatural.setSolcorreoempresa(correoEmpresa);
                                    delegate.registrarPersona(personaNatural);
                                    contratanteRegistrado  = true;
                                    mostrarMensaje("INFO: ", "Contratante registrado con exito", FacesMessage.SEVERITY_INFO);
                                } else {
                                    contratanteRegistrado = false;
                                    mostrarMensaje("ERROR: ", "Ingrese nombre de la persona", FacesMessage.SEVERITY_ERROR);
                                    return null;
                                }
                            } else {
                                contratanteRegistrado = false;
                                mostrarMensaje("ERROR: ", "Ingrese apellido materno de la persona", FacesMessage.SEVERITY_ERROR);
                                return null;
                            }
                        } else {
                            contratanteRegistrado = false;
                            mostrarMensaje("ERROR: ", "Ingrese apellido paterno de la persona", FacesMessage.SEVERITY_ERROR);
                            return null;
                        }
                    }
                    persona = delegate.buscarDni(personaNatural.getPerNroDNI());
                    contratanteSeleccionado = (persona != null) ? true : false;
                    direccion.setSolCodigo(persona);
                } else {
                    //validamos datos de la empresa
                    if (validarStrings(personaJuridica.getSolRUC())) {
                        if (validarStrings(personaJuridica.getEmprazonSocial())) {
                            String correoPersonal1 = (personaJuridica.getSolcorreopersonal1().compareTo("-- no tiene correo --")==0) ? null : personaJuridica.getSolcorreopersonal1();
                            String correoPersonal2 = (personaJuridica.getSolcorreopersonal2().compareTo("-- no tiene correo --")==0) ? null : personaJuridica.getSolcorreopersonal2();
                            String correoEmpresa = (personaJuridica.getSolcorreoempresa().compareTo("-- no tiene correo --")==0) ? null : personaJuridica.getSolcorreoempresa();
                            personaJuridica.setSolcorreopersonal1(correoPersonal1);
                            personaJuridica.setSolcorreopersonal2(correoPersonal2);
                            personaJuridica.setSolcorreoempresa(correoEmpresa);
                            delegate.registrarEmpresa(personaJuridica);
                            contratanteRegistrado = true;
                        } else {
                            contratanteRegistrado = false;
                            mostrarMensaje("ERROR: ", "Ingrese razón social de la empresa", FacesMessage.SEVERITY_ERROR);
                            return null;
                        }
                    } else {
                        contratanteRegistrado = false;
                        mostrarMensaje("ERROR: ", "Ingrese número de ruc de la empresa", FacesMessage.SEVERITY_ERROR);
                        return null;
                    }
                    empresa = delegate.buscaRuc(personaJuridica.getSolRUC());
                    contratanteSeleccionado = (empresa != null) ? true : false;
                    direccion.setSolCodigo(empresa);
                }
            }
            codDistrito = (codDistrito != null) ? codDistrito : 0;
            codVia = (codVia != null) ? codVia : 0;
            codZona = (codZona != null) ? codZona : 0;

            distrito = delegate.buscarDistrito(codDistrito);
            via = delegate.buscarVia(codVia);
            zona = delegate.buscarZona(codZona);

            direccion.setDisCodigo(distrito);
            direccion.setViaCodigo(via);
            direccion.setZonaCodigo(zona);
            delegate.registrarDireccion(direccion);
            mostrarMensaje("INFO: ", "Se agregó la dirección con éxito.", FacesMessage.SEVERITY_INFO);
        } catch (Exception ex) {
            mostrarMensaje("ERROR: ", "Al agregar la dirección del contratante...", FacesMessage.SEVERITY_ERROR);
            System.out.println("FATAL: " + ex.getMessage());
        }
        return listarDireccion();
    }

    public String quitarDireccion() {
        try {
            delegate.eliminarDireccion(direccionSeleccionada);
            listarDireccion();
        } catch (Exception ex) {
            mostrarMensaje("ERROR: ", "Al eliminar la dirección del contratante...", FacesMessage.SEVERITY_ERROR);
            System.out.println("FATAL: " + ex.getMessage());
        }
        return null;
    }

    public String agregarTelefono() {
        try {
            contratanteSeleccionado = (contratanteSeleccionado != null) ? contratanteSeleccionado  : false;
            contratanteRegistrado = (contratanteRegistrado != null) ? contratanteRegistrado : false;
            if (!contratanteRegistrado) {
                if (tipoPersona == 1) {
                    //validamos datos de la persona
                    if (validarStrings(personaNatural.getPerNroDNI())) {
                        if (validarStrings(personaNatural.getPerapellidoPaterno())) {
                            if (validarStrings(personaNatural.getPerapellidoMaterno())) {
                                if (validarStrings(personaNatural.getPerNombres())) {
                                    delegate.registrarPersona(personaNatural);
                                    contratanteRegistrado  = true;
                                    mostrarMensaje("INFO: ", "Contratante registrado con exito", FacesMessage.SEVERITY_INFO);
                                } else {
                                    contratanteRegistrado = false;
                                    mostrarMensaje("ERROR: ", "Ingrese nombre de la persona", FacesMessage.SEVERITY_ERROR);
                                    return null;
                                }
                            } else {
                                contratanteRegistrado = false;
                                mostrarMensaje("ERROR: ", "Ingrese apellido materno de la persona", FacesMessage.SEVERITY_ERROR);
                                return null;
                            }
                        } else {
                            contratanteRegistrado = false;
                            mostrarMensaje("ERROR: ", "Ingrese apellido paterno de la persona", FacesMessage.SEVERITY_ERROR);
                            return null;
                        }
                    }
                    persona = delegate.buscarDni(personaNatural.getPerNroDNI());
                    contratanteSeleccionado = (persona != null) ? true : false;
                    telefono.setSolCodigo(persona);
                } else {
                    if (validarStrings(personaJuridica.getSolRUC())) {
                        if (validarStrings(personaJuridica.getEmprazonSocial())) {
                            delegate.registrarEmpresa(personaJuridica);
                            contratanteRegistrado = true;
                            mostrarMensaje("INFO: ", "Se registro con exito a la empresa", FacesMessage.SEVERITY_INFO);
                        } else {
                            contratanteRegistrado = false;
                            mostrarMensaje("ERROR: ", "Ingrese razón social de la empresa", FacesMessage.SEVERITY_ERROR);
                            return null;
                        }
                    } else {
                        contratanteRegistrado = false;
                        mostrarMensaje("ERROR: ", "Ingrese número de ruc de la empresa", FacesMessage.SEVERITY_ERROR);
                        return null;
                    }
                    empresa = delegate.buscaRuc(personaJuridica.getSolRUC());
                    contratanteSeleccionado = (empresa != null) ? true : false;
                    telefono.setSolCodigo(empresa);
                }
            }
            telefono.setTsoEstado(true);
            delegate.registrarTelefono(telefono);
            mostrarMensaje("INFO: ", "Se agregó el teléfono con éxito.", FacesMessage.SEVERITY_INFO);
        } catch (Exception ex) {
            mostrarMensaje("ERROR: ", "Al agregar el teléfono del contratante...", FacesMessage.SEVERITY_ERROR);
            System.out.println("FATAL: " + ex.getMessage());
        }
        return listarDireccion();
    }

    public String listarDireccion() {
        try {
            Long solCodigo = 0L;
            if (tipoPersona==1) {
                solCodigo = persona.getSolCodigo();
            } else {
                solCodigo = empresa.getSolCodigo();
            }
            listaDireccion = delegate.listarDireccion(solCodigo);
        } catch (Exception ex) {
            mostrarMensaje("ERROR: ", "En listar dirección del contratante", FacesMessage.SEVERITY_ERROR);
            System.out.println("ERROR: " + ex.getMessage());
        }
        return null;
    }

    public String listarTelefono() {
        try {
            Long solCodigo = 0L;
            if (tipoPersona==1) {
                solCodigo = persona.getSolCodigo();
            } else {
                solCodigo = empresa.getSolCodigo();
            }
            listaTelefono = delegate.listarTelefonos(solCodigo);
        } catch (Exception ex) {
            mostrarMensaje("ERROR: ", "En listar telefono del contratante", FacesMessage.SEVERITY_ERROR);
            System.out.println("ERROR: " + ex.getMessage());
        }
        return null;
    }

    //combos: lizardo estuvo aqui
    public SelectItem[] getComboDepartamentos() {
        try {
            System.out.println("Ingreso 1");
            SelectItem[] selects = null;
            //codigoEvento = 3; //borrar esta linea
            System.out.println("codigoDepartamento: " + codDepartamento);
            //List<ModuloCurso> listaModulos = delegadoModuloCurso.listarModuloXCurso(codigoEvento);
            List<Departamento> listaDepartamento = delegate.listarDepartamentos();
            selects = new SelectItem[listaDepartamento.size()];
            int cont = 0;
            for (Departamento dpto : listaDepartamento) {
                SelectItem item = new SelectItem(dpto.getDepCodigo(), dpto.getDepNombre());
                selects[cont++] = item;
            }
            return selects;
        } catch (Exception e) {
            System.out.println("Ingreso Error: " + e.getMessage());
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen departamentos");
            selects[0] = item;
            return selects;
        }
    }

    public SelectItem[] getComboProvincias() {
        try {
            System.out.println("Ingreso 1");
            SelectItem[] selects = null;
            //codigoEvento = 3; //borrar esta linea
            System.out.println("codigoProvincia: " + codProvincia);
            //List<ModuloCurso> listaModulos = delegadoModuloCurso.listarModuloXCurso(codigoEvento);
            codDepartamento = (codDepartamento != null) ? codDepartamento : 0;
            Departamento dpto = new Departamento();
            dpto = delegate.buscarDepartamento(codDepartamento);
            List<Provincia> listaProvincia = delegate.listarProvincias(dpto);
            selects = new SelectItem[listaProvincia.size()];
            int cont = 0;
            for (Provincia prov : listaProvincia) {
                SelectItem item = new SelectItem(prov.getProCodigo(), prov.getProNombre());
                selects[cont++] = item;
            }
            return selects;
        } catch (Exception e) {
            System.out.println("Ingreso Error: " + e.getMessage());
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen provincias");
            selects[0] = item;
            return selects;
        }
    }

    public SelectItem[] getComboDistritos() {
        try {
            System.out.println("Ingreso 1");
            SelectItem[] selects = null;
            //codigoEvento = 3; //borrar esta linea
            System.out.println("codigoDistrito: " + codDistrito);
            //List<ModuloCurso> listaModulos = delegadoModuloCurso.listarModuloXCurso(codigoEvento);
            codProvincia = (codProvincia != null) ? codProvincia : 0;
            Provincia prov = new Provincia();
            prov = delegate.buscarProvincia(codProvincia);
            List<Distrito> listaDistritos = delegate.listarDistritos(prov);
            selects = new SelectItem[listaDistritos.size()];
            int cont = 0;
            for (Distrito dist : listaDistritos) {
                SelectItem item = new SelectItem(dist.getDisCodigo(), dist.getDisNombre());
                selects[cont++] = item;
            }
            return selects;
        } catch (Exception e) {
            System.out.println("Ingreso Error: " + e.getMessage());
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen distritos");
            selects[0] = item;
            return selects;
        }
    }

    public SelectItem[] getComboVias() {
        try {
            System.out.println("Ingreso 1");
            SelectItem[] selects = null;
            //codigoEvento = 3; //borrar esta linea
            System.out.println("codigoVia: " + codVia);
            //List<ModuloCurso> listaModulos = delegadoModuloCurso.listarModuloXCurso(codigoEvento);
            List<Via> listaVia = delegate.listarVias();
            selects = new SelectItem[listaVia.size()];
            int cont = 0;
            for (Via v : listaVia) {
                SelectItem item = new SelectItem(v.getViaCodigo(), v.getViaNombre());
                selects[cont++] = item;
            }
            return selects;
        } catch (Exception e) {
            System.out.println("Ingreso Error: " + e.getMessage());
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen vías");
            selects[0] = item;
            return selects;
        }
    }

    public SelectItem[] getComboZonas() {
        try {
            System.out.println("Ingreso 1");
            SelectItem[] selects = null;
            //codigoEvento = 3; //borrar esta linea
            System.out.println("codigoZona: " + codZona);
            //List<ModuloCurso> listaModulos = delegadoModuloCurso.listarModuloXCurso(codigoEvento);
            List<TipoZona> listaZonas = delegate.listarZonas();
            selects = new SelectItem[listaZonas.size()];
            int cont = 0;
            for (TipoZona z : listaZonas) {
                SelectItem item = new SelectItem(z.getZonCodigo(), z.getZonNombre());
                selects[cont++] = item;
            }
            return selects;
        } catch (Exception e) {
            System.out.println("Ingreso Error: " + e.getMessage());
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen zonas");
            selects[0] = item;
            return selects;
        }
    }

    public SelectItem[] getComboEventos2() {
        //Combo Eventos Activos
        try {
            List<Preevento> listaEvento = new ArrayList<Preevento>();
            EventoDelegate delegadoEvento = new EventoDelegate();
            listaEvento = delegadoEvento.ListarEventosActivos();
            SelectItem[] comboInfluencia = new SelectItem[listaEvento.size()];
            for (int i = 0; i < listaEvento.size(); i++) {
                String abrev = "";
                if (listaEvento.get(i).getPreNombre().length() > 45) {
                    abrev = listaEvento.get(i).getPreNombre().substring(0, 45);
                } else {
                    abrev = listaEvento.get(i).getPreNombre();
                }
                comboInfluencia[i] = new SelectItem(listaEvento.get(i).getPreCodigo(), abrev);
            }
            delegadoEvento = null;
            return comboInfluencia;

        } catch (Exception e) {
            //Mensaje al usuario
            //listaEvento = new ArrayList<Evento>();
            SelectItem[] comboInfluencia = new SelectItem[1];
            comboInfluencia[0] = new SelectItem(new Preevento(), "No hay Eventos");
            System.out.println("FATAL: " + e.getMessage());
            return comboInfluencia;
        }
    }

    public SelectItem[] getComboEventos() {
        try {
            System.out.println("Ingreso 1");
            SelectItem[] selects = null;
            PreEventoDelegate delegadoPreevento = new PreEventoDelegate();
            List<Preevento> listaEvento = delegadoPreevento.listaEventos();

            selects = new SelectItem[listaEvento.size()];
            int cont = 0;
            boolean ban = true;
            for (Preevento preevento : listaEvento) {
                if (ban) {
                    preevento.setNroCaracteres(35);
                    ban = false;
                }
                SelectItem item = new SelectItem(preevento.getPreCodigo(), preevento.getPreNombreCorto());
                selects[cont++] = item;
            }
            return selects;
        } catch (Exception e) {
            System.out.println("Ingreso Error: " + e.getMessage());
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen eventos");
            selects[0] = item;
            return selects;
        }
    }

    @SuppressWarnings("static-access")
    public String exportarExcel() {
        try {
            if (listaAmbientesDisponibles1.size() > 0) {
                String rutaPlantilla = "", archGenerado = "";
                rutaPlantilla = ruta.getRuta() + "PlantillaCalendarioAmbientes.xls";
                archGenerado = ruta.getRuta() + "RepCalendarioAmbientes.xls";
                ExportarExcel export = new ExportarExcel();
                try {
                    export.generarDocDesdePlantilla(rutaPlantilla, archGenerado);
                    export.addCeldaString(2, 4, nombreEvento);
                    System.out.println("nombre evento "+nombreEvento);
                    int i = 10;
                    for (DisponibilidadAmbientesSemanal det : listaAmbientesDisponibles1) {
                        export.addCeldaString(i, 1, det.getHorarios());
                        export.addCeldaString(i, 2, det.getLunes());
                        export.addBackgroundAmbiente(i, 2, det.getColorLunes());
                        export.addCeldaString(i, 3, det.getMartes());
                        export.addBackgroundAmbiente(i, 3, det.getColorMartes());
                        export.addCeldaString(i, 4, det.getMiercoles());
                        export.addBackgroundAmbiente(i, 4, det.getColorMiercoles());
                        export.addCeldaString(i, 5, det.getJueves());
                        export.addBackgroundAmbiente(i, 5, det.getColorJueves());
                        export.addCeldaString(i, 6, det.getViernes());
                        export.addBackgroundAmbiente(i, 6, det.getColorViernes());
                        export.addCeldaString(i, 7, det.getSabado());
                        export.addBackgroundAmbiente(i, 7, det.getColorSabado());
                        export.addCeldaString(i, 8, det.getDomingo());
                        export.addBackgroundAmbiente(i, 8, det.getColorDomingo());
                        i++;
                    }
                    ruta.generarExcel(archGenerado, export.cerrarConexion());
                } catch (Exception e) {
                    ruta.generarExcel(archGenerado, export.cerrarConexion());
                    System.out.print("----" + e.toString());
                }
            } else {
                mostrarMensaje("Error: ", "Busque y Seleccione una reserva", FacesMessage.SEVERITY_ERROR);
                return null;
            }
        } catch (Exception e) {
        }
        return null;
    }

    private String verificarTipoReservacion() {
        switch (tipoReservacion) {
            case 0: //cumpleaños
                ocultarEvento = false;
                tipoModalidad = 2;
                break;
            case 1: //reuniones
                ocultarEvento = true;
                tipoModalidad = 5;
                break;
            case 2: //feriados
                ocultarEvento = false;
                tipoModalidad = 4;
                break;
            case 3: //contratos
                ocultarEvento = true;
                tipoModalidad = 1;
                break;
            case 4: //No disponible
                ocultarEvento = false;
                tipoModalidad = 3;
                break;
            case 5: //otros
                ocultarEvento = false;
                tipoModalidad = 7;
                break;
        }
        return null;
    }

    private void mostrarPersona() {
        nombrePersona = (persona.getSolCodigo() != null) ? persona.getApellidosNombres() : "<No se encontró a la persona>";
    }

    private void mostrarPersonaV2() {
        nombrePersona = (personaSeleccionada.getSolCodigo() != null) ? personaSeleccionada.getApellidosNombres() : "<No se encontró a la persona>";
    }

    private void mostrarEmpresa() {
        nombreEmpresa = (empresa.getSolCodigo() != null) ? empresa.getEmprazonSocial() : "<No se encontró el nombre de la empresa>";
        System.out.println("empresa: " + nombreEmpresa);
        //razonSocial = (empresa.getSolCodigo() != null) ? empresa.getEmprazonSocial() : "";
    }

    private void mostrarEmpresaV2() {
        nombreEmpresa = (empresaSeleccionada.getEmprazonSocial() != null) ? empresaSeleccionada.getEmprazonSocial() : "";
        System.out.println("empresa: " + nombreEmpresa);
    }
}
